diff options
Diffstat (limited to 'test/integration/targets/missing_required_lib')
5 files changed, 104 insertions, 0 deletions
diff --git a/test/integration/targets/missing_required_lib/aliases b/test/integration/targets/missing_required_lib/aliases new file mode 100644 index 0000000..498fedd --- /dev/null +++ b/test/integration/targets/missing_required_lib/aliases @@ -0,0 +1,2 @@ +shippable/posix/group4 +context/controller diff --git a/test/integration/targets/missing_required_lib/library/missing_required_lib.py b/test/integration/targets/missing_required_lib/library/missing_required_lib.py new file mode 100644 index 0000000..480ea00 --- /dev/null +++ b/test/integration/targets/missing_required_lib/library/missing_required_lib.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +# Copyright: (c) 2020, Matt Martz <matt@sivel.net> +# 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.module_utils.basic import AnsibleModule, missing_required_lib + +try: + import ansible_missing_lib + HAS_LIB = True +except ImportError as e: + HAS_LIB = False + + +def main(): + module = AnsibleModule({ + 'url': {'type': 'bool'}, + 'reason': {'type': 'bool'}, + }) + kwargs = {} + if module.params['url']: + kwargs['url'] = 'https://github.com/ansible/ansible' + if module.params['reason']: + kwargs['reason'] = 'for fun' + if not HAS_LIB: + module.fail_json( + msg=missing_required_lib( + 'ansible_missing_lib', + **kwargs + ), + ) + + +if __name__ == '__main__': + main() diff --git a/test/integration/targets/missing_required_lib/runme.sh b/test/integration/targets/missing_required_lib/runme.sh new file mode 100755 index 0000000..2e1ea8d --- /dev/null +++ b/test/integration/targets/missing_required_lib/runme.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eux +export ANSIBLE_ROLES_PATH=../ +ansible-playbook -i ../../inventory runme.yml -e "output_dir=${OUTPUT_DIR}" -v "$@" diff --git a/test/integration/targets/missing_required_lib/runme.yml b/test/integration/targets/missing_required_lib/runme.yml new file mode 100644 index 0000000..e1df795 --- /dev/null +++ b/test/integration/targets/missing_required_lib/runme.yml @@ -0,0 +1,57 @@ +- hosts: localhost + gather_facts: false + tasks: + - command: ansible localhost -m import_role -a role=missing_required_lib -e url=true -e reason=true + register: missing_required_lib_all + failed_when: missing_required_lib_all.rc == 0 + + - command: ansible localhost -m import_role -a role=missing_required_lib + register: missing_required_lib_none + failed_when: missing_required_lib_none.rc == 0 + + - command: ansible localhost -m import_role -a role=missing_required_lib -e url=true + register: missing_required_lib_url + failed_when: missing_required_lib_url.rc == 0 + + - command: ansible localhost -m import_role -a role=missing_required_lib -e reason=true + register: missing_required_lib_reason + failed_when: missing_required_lib_reason.rc == 0 + + - assert: + that: + - missing_required_lib_all.stdout is search(expected_all) + - missing_required_lib_none.stdout is search(expected_none) + - missing_required_lib_url.stdout is search(expected_url) + - missing_required_lib_reason.stdout is search(expected_reason) + vars: + expected_all: >- + Failed to import the required Python library \(ansible_missing_lib\) on + \S+'s Python \S+\. + This is required for fun\. See https://github.com/ansible/ansible for + more info. Please read the module documentation and install it in the + appropriate location\. If the required library is installed, but Ansible + is using the wrong Python interpreter, please consult the documentation + on ansible_python_interpreter + expected_none: >- + Failed to import the required Python library \(ansible_missing_lib\) on + \S+'s Python \S+\. + Please read the module documentation and install it in the + appropriate location\. If the required library is installed, but Ansible + is using the wrong Python interpreter, please consult the documentation + on ansible_python_interpreter + expected_url: >- + Failed to import the required Python library \(ansible_missing_lib\) on + \S+'s Python \S+\. + See https://github.com/ansible/ansible for + more info\. Please read the module documentation and install it in the + appropriate location\. If the required library is installed, but Ansible + is using the wrong Python interpreter, please consult the documentation + on ansible_python_interpreter + expected_reason: >- + Failed to import the required Python library \(ansible_missing_lib\) on + \S+'s Python \S+\. + This is required for fun\. + Please read the module documentation and install it in the + appropriate location\. If the required library is installed, but Ansible + is using the wrong Python interpreter, please consult the documentation + on ansible_python_interpreter diff --git a/test/integration/targets/missing_required_lib/tasks/main.yml b/test/integration/targets/missing_required_lib/tasks/main.yml new file mode 100644 index 0000000..a50f5ac --- /dev/null +++ b/test/integration/targets/missing_required_lib/tasks/main.yml @@ -0,0 +1,3 @@ +- missing_required_lib: + url: '{{ url|default(omit) }}' + reason: '{{ reason|default(omit) }}' |