mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
* Fix crash in case of tombstoning.
* Extend tests.
(cherry picked from commit c23bbb5c4a
)
Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
a26792418e
commit
01b2c48161
3 changed files with 30 additions and 8 deletions
2
changelogs/fragments/3660-a_module-tombstone.yml
Normal file
2
changelogs/fragments/3660-a_module-tombstone.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- "a_module test plugin - fix crash when testing a module name that was tombstoned (https://github.com/ansible-collections/community.general/pull/3660)."
|
|
@ -7,6 +7,11 @@ __metaclass__ = type
|
||||||
|
|
||||||
from ansible.plugins.loader import action_loader, module_loader
|
from ansible.plugins.loader import action_loader, module_loader
|
||||||
|
|
||||||
|
try:
|
||||||
|
from ansible.errors import AnsiblePluginRemovedError
|
||||||
|
except ImportError:
|
||||||
|
AnsiblePluginRemovedError = Exception
|
||||||
|
|
||||||
|
|
||||||
def a_module(term):
|
def a_module(term):
|
||||||
"""
|
"""
|
||||||
|
@ -14,14 +19,17 @@ def a_module(term):
|
||||||
- 'community.general.ufw' is community.general.a_module
|
- 'community.general.ufw' is community.general.a_module
|
||||||
- 'community.general.does_not_exist' is not community.general.a_module
|
- 'community.general.does_not_exist' is not community.general.a_module
|
||||||
"""
|
"""
|
||||||
for loader in (action_loader, module_loader):
|
try:
|
||||||
data = loader.find_plugin(term)
|
for loader in (action_loader, module_loader):
|
||||||
# Ansible 2.9 returns a tuple
|
data = loader.find_plugin(term)
|
||||||
if isinstance(data, tuple):
|
# Ansible 2.9 returns a tuple
|
||||||
data = data[0]
|
if isinstance(data, tuple):
|
||||||
if data is not None:
|
data = data[0]
|
||||||
return True
|
if data is not None:
|
||||||
return False
|
return True
|
||||||
|
return False
|
||||||
|
except AnsiblePluginRemovedError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class TestModule(object):
|
class TestModule(object):
|
||||||
|
|
|
@ -23,3 +23,15 @@
|
||||||
# Local collection module (that exist or not)
|
# Local collection module (that exist or not)
|
||||||
- "'testns.testcoll.collection_module' is community.general.a_module"
|
- "'testns.testcoll.collection_module' is community.general.a_module"
|
||||||
- "'testns.testcoll.foobar' is not community.general.a_module"
|
- "'testns.testcoll.foobar' is not community.general.a_module"
|
||||||
|
|
||||||
|
- name: Test a_module in case of routing
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
# Redirected module
|
||||||
|
- "'ufw' is community.general.a_module"
|
||||||
|
# Redirected module where target collection does not exist
|
||||||
|
# (the target collection must not have been installed in CI!)
|
||||||
|
- "'onyx_pfc_interface' is not community.general.a_module"
|
||||||
|
# Tombstoned module
|
||||||
|
- "'community.general.docker_image_facts' is not community.general.a_module"
|
||||||
|
when: ansible_version.string is version('2.10.0', '>=')
|
||||||
|
|
Loading…
Reference in a new issue