mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 11:21:25 -07:00
[PR #9179/a3bd49c0 backport][stable-10] deps module utils: unit tests + minor improvement (#9182)
deps module utils: unit tests + minor improvement (#9179)
* deps module utils: unit tests + minor improvement
* deps.clear() calls dict.clear() instead of creating new dict
* add changelog frag
(cherry picked from commit a3bd49c010
)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
parent
5fe39082d5
commit
0b64fc1ee4
5 changed files with 81 additions and 1 deletions
69
tests/unit/plugins/module_utils/test_deps.py
Normal file
69
tests/unit/plugins/module_utils/test_deps.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# (c) 2024, Alexei Znamensky <russoz@gmail.com>
|
||||
# Copyright (c) 2024 Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
from ansible_collections.community.general.tests.unit.compat.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils import deps
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def module():
|
||||
m = MagicMock()
|
||||
m.fail_json.side_effect = RuntimeError
|
||||
return m
|
||||
|
||||
|
||||
def test_wrong_name(module):
|
||||
with deps.declare("sys") as sys_dep:
|
||||
import sys # noqa: F401, pylint: disable=unused-import
|
||||
|
||||
with pytest.raises(KeyError):
|
||||
deps.validate(module, "wrong_name")
|
||||
|
||||
|
||||
def test_fail_potatoes(module):
|
||||
with deps.declare("potatoes", reason="Must have potatoes") as potatoes_dep:
|
||||
import potatoes_that_will_never_be_there # noqa: F401, pylint: disable=unused-import
|
||||
|
||||
with pytest.raises(RuntimeError):
|
||||
deps.validate(module)
|
||||
|
||||
assert potatoes_dep.failed is True
|
||||
assert potatoes_dep.message.startswith("Failed to import the required Python library")
|
||||
|
||||
|
||||
def test_sys(module):
|
||||
with deps.declare("sys") as sys_dep:
|
||||
import sys # noqa: F401, pylint: disable=unused-import
|
||||
|
||||
deps.validate(module)
|
||||
|
||||
assert sys_dep.failed is False
|
||||
|
||||
|
||||
def test_multiple(module):
|
||||
with deps.declare("mpotatoes", reason="Must have mpotatoes"):
|
||||
import potatoes_that_will_never_be_there # noqa: F401, pylint: disable=unused-import
|
||||
|
||||
with deps.declare("msys", reason="Must have msys"):
|
||||
import sys # noqa: F401, pylint: disable=unused-import
|
||||
|
||||
deps.validate(module, "msys")
|
||||
deps.validate(module, "-mpotatoes")
|
||||
|
||||
with pytest.raises(RuntimeError):
|
||||
deps.validate(module)
|
||||
|
||||
with pytest.raises(RuntimeError):
|
||||
deps.validate(module, "-msys")
|
||||
|
||||
with pytest.raises(RuntimeError):
|
||||
deps.validate(module, "mpotatoes")
|
Loading…
Add table
Add a link
Reference in a new issue