summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/collections_runtime_pythonpath
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/collections_runtime_pythonpath')
-rw-r--r--test/integration/targets/collections_runtime_pythonpath/aliases2
-rw-r--r--test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/ansible_collections/python/dist/plugins/modules/boo.py28
-rw-r--r--test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/pyproject.toml6
-rw-r--r--test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/setup.cfg15
-rw-r--r--test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-foo/ansible_collections/python/dist/plugins/modules/boo.py28
-rwxr-xr-xtest/integration/targets/collections_runtime_pythonpath/runme.sh60
6 files changed, 139 insertions, 0 deletions
diff --git a/test/integration/targets/collections_runtime_pythonpath/aliases b/test/integration/targets/collections_runtime_pythonpath/aliases
new file mode 100644
index 0000000..8278ec8
--- /dev/null
+++ b/test/integration/targets/collections_runtime_pythonpath/aliases
@@ -0,0 +1,2 @@
+shippable/posix/group3
+context/controller
diff --git a/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/ansible_collections/python/dist/plugins/modules/boo.py b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/ansible_collections/python/dist/plugins/modules/boo.py
new file mode 100644
index 0000000..a2313b1
--- /dev/null
+++ b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/ansible_collections/python/dist/plugins/modules/boo.py
@@ -0,0 +1,28 @@
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+"""Say hello."""
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+
+from ansible.module_utils.basic import AnsibleModule
+
+
+def main():
+ module = AnsibleModule(
+ argument_spec={
+ 'name': {'default': 'world'},
+ },
+ )
+ name = module.params['name']
+
+ module.exit_json(
+ msg='Greeting {name} completed.'.
+ format(name=name.title()),
+ greeting='Hello, {name}!'.format(name=name),
+ )
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/pyproject.toml b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/pyproject.toml
new file mode 100644
index 0000000..feec734
--- /dev/null
+++ b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/pyproject.toml
@@ -0,0 +1,6 @@
+[build-system]
+requires = [
+ "setuptools >= 44",
+ "wheel",
+]
+build-backend = "setuptools.build_meta"
diff --git a/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/setup.cfg b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/setup.cfg
new file mode 100644
index 0000000..d25ebb0
--- /dev/null
+++ b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-boo/setup.cfg
@@ -0,0 +1,15 @@
+[metadata]
+name = ansible-collections.python.dist
+version = 1.0.0rc2.post3.dev4
+
+[options]
+package_dir =
+ = .
+packages =
+ ansible_collections
+ ansible_collections.python
+ ansible_collections.python.dist
+ ansible_collections.python.dist.plugins
+ ansible_collections.python.dist.plugins.modules
+zip_safe = True
+include_package_data = True
diff --git a/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-foo/ansible_collections/python/dist/plugins/modules/boo.py b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-foo/ansible_collections/python/dist/plugins/modules/boo.py
new file mode 100644
index 0000000..1ef0333
--- /dev/null
+++ b/test/integration/targets/collections_runtime_pythonpath/ansible-collection-python-dist-foo/ansible_collections/python/dist/plugins/modules/boo.py
@@ -0,0 +1,28 @@
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+"""Say hello in Ukrainian."""
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+
+from ansible.module_utils.basic import AnsibleModule
+
+
+def main():
+ module = AnsibleModule(
+ argument_spec={
+ 'name': {'default': 'світ'},
+ },
+ )
+ name = module.params['name']
+
+ module.exit_json(
+ msg='Greeting {name} completed.'.
+ format(name=name.title()),
+ greeting='Привіт, {name}!'.format(name=name),
+ )
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/collections_runtime_pythonpath/runme.sh b/test/integration/targets/collections_runtime_pythonpath/runme.sh
new file mode 100755
index 0000000..38c6c64
--- /dev/null
+++ b/test/integration/targets/collections_runtime_pythonpath/runme.sh
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+
+set -eux -o pipefail
+
+
+export PIP_DISABLE_PIP_VERSION_CHECK=1
+
+
+source virtualenv.sh
+
+
+>&2 echo \
+ === Test that the module \
+ gets picked up if discoverable \
+ via PYTHONPATH env var ===
+PYTHONPATH="${PWD}/ansible-collection-python-dist-boo:$PYTHONPATH" \
+ansible \
+ -m python.dist.boo \
+ -a 'name=Bob' \
+ -c local localhost \
+ "$@" | grep -E '"greeting": "Hello, Bob!",'
+
+
+>&2 echo \
+ === Test that the module \
+ gets picked up if installed \
+ into site-packages ===
+python -m pip install pep517
+( # Build a binary Python dist (a wheel) using PEP517:
+ cp -r ansible-collection-python-dist-boo "${OUTPUT_DIR}/"
+ cd "${OUTPUT_DIR}/ansible-collection-python-dist-boo"
+ python -m pep517.build --binary --out-dir dist .
+)
+# Install a pre-built dist with pip:
+python -m pip install \
+ --no-index \
+ -f "${OUTPUT_DIR}/ansible-collection-python-dist-boo/dist/" \
+ --only-binary=ansible-collections.python.dist \
+ ansible-collections.python.dist
+python -m pip show ansible-collections.python.dist
+ansible \
+ -m python.dist.boo \
+ -a 'name=Frodo' \
+ -c local localhost \
+ "$@" | grep -E '"greeting": "Hello, Frodo!",'
+
+
+>&2 echo \
+ === Test that ansible_collections \
+ root takes precedence over \
+ PYTHONPATH/site-packages ===
+# This is done by injecting a module with the same FQCN
+# into another collection root.
+ANSIBLE_COLLECTIONS_PATH="${PWD}/ansible-collection-python-dist-foo" \
+PYTHONPATH="${PWD}/ansible-collection-python-dist-boo:$PYTHONPATH" \
+ansible \
+ -m python.dist.boo \
+ -a 'name=Степан' \
+ -c local localhost \
+ "$@" | grep -E '"greeting": "Привіт, Степан!",'