mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
a_module test: fix crash in case of tombstoning (#3660)
* Fix crash in case of tombstoning. * Extend tests.
This commit is contained in:
parent
d9398eb8d1
commit
c23bbb5c4a
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
|
||||
|
||||
try:
|
||||
from ansible.errors import AnsiblePluginRemovedError
|
||||
except ImportError:
|
||||
AnsiblePluginRemovedError = Exception
|
||||
|
||||
|
||||
def a_module(term):
|
||||
"""
|
||||
|
@ -14,14 +19,17 @@ def a_module(term):
|
|||
- 'community.general.ufw' is community.general.a_module
|
||||
- 'community.general.does_not_exist' is not community.general.a_module
|
||||
"""
|
||||
for loader in (action_loader, module_loader):
|
||||
data = loader.find_plugin(term)
|
||||
# Ansible 2.9 returns a tuple
|
||||
if isinstance(data, tuple):
|
||||
data = data[0]
|
||||
if data is not None:
|
||||
return True
|
||||
return False
|
||||
try:
|
||||
for loader in (action_loader, module_loader):
|
||||
data = loader.find_plugin(term)
|
||||
# Ansible 2.9 returns a tuple
|
||||
if isinstance(data, tuple):
|
||||
data = data[0]
|
||||
if data is not None:
|
||||
return True
|
||||
return False
|
||||
except AnsiblePluginRemovedError:
|
||||
return False
|
||||
|
||||
|
||||
class TestModule(object):
|
||||
|
|
|
@ -23,3 +23,15 @@
|
|||
# Local collection module (that exist or not)
|
||||
- "'testns.testcoll.collection_module' is 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