mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-19 14:50:21 -07:00
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
This commit is contained in:
parent
152339a8f9
commit
a3bd49c010
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