summaryrefslogtreecommitdiff
path: root/test/integration/targets
diff options
context:
space:
mode:
authorMatt Davis <6775756+nitzmahone@users.noreply.github.com>2022-08-03 10:29:51 -0700
committerGitHub <noreply@github.com>2022-08-03 10:29:51 -0700
commitff4bb5500a79609de7d23253b2f25713eeaf6bfe (patch)
treea950e40852006c67670e2449243ffa4179ca6c29 /test/integration/targets
parent426e4899a3dab37b88f128807616502b99dab5ae (diff)
downloadansible-ff4bb5500a79609de7d23253b2f25713eeaf6bfe.tar.gz
PluginLoader now installs module-to-be-imported in sys.modules before exec (as Python import does). (#78364) (#78367)
(cherry picked from commit 1368bfa34821df099fde36c6e655d92d40bf24f5)
Diffstat (limited to 'test/integration/targets')
-rw-r--r--test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py29
-rw-r--r--test/integration/targets/plugin_loader/normal/self_referential.yml5
2 files changed, 34 insertions, 0 deletions
diff --git a/test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py b/test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py
new file mode 100644
index 0000000000..b4c8957759
--- /dev/null
+++ b/test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py
@@ -0,0 +1,29 @@
+# Copyright: Contributors to the Ansible project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible.plugins.action import ActionBase
+
+import sys
+
+# reference our own module from sys.modules while it's being loaded to ensure the importer behaves properly
+try:
+ mod = sys.modules[__name__]
+except KeyError:
+ raise Exception(f'module {__name__} is not accessible via sys.modules, likely a pluginloader bug')
+
+
+class ActionModule(ActionBase):
+ TRANSFERS_FILES = False
+
+ def run(self, tmp=None, task_vars=None):
+ if task_vars is None:
+ task_vars = dict()
+
+ result = super(ActionModule, self).run(tmp, task_vars)
+ del tmp # tmp no longer has any effect
+
+ result['changed'] = False
+ result['msg'] = 'self-referential action loaded and ran successfully'
+ return result
diff --git a/test/integration/targets/plugin_loader/normal/self_referential.yml b/test/integration/targets/plugin_loader/normal/self_referential.yml
new file mode 100644
index 0000000000..d3eed21833
--- /dev/null
+++ b/test/integration/targets/plugin_loader/normal/self_referential.yml
@@ -0,0 +1,5 @@
+- hosts: testhost
+ gather_facts: false
+ tasks:
+ - name: ensure a self-referential action plugin loads properly
+ self_referential: