diff --git a/test/integration/targets/old_style_modules_posix/aliases b/test/integration/targets/old_style_modules_posix/aliases new file mode 100644 index 00000000000..b59832142f2 --- /dev/null +++ b/test/integration/targets/old_style_modules_posix/aliases @@ -0,0 +1 @@ +shippable/posix/group3 diff --git a/test/integration/targets/old_style_modules_posix/library/helloworld.sh b/test/integration/targets/old_style_modules_posix/library/helloworld.sh new file mode 100644 index 00000000000..c1108a8c7f4 --- /dev/null +++ b/test/integration/targets/old_style_modules_posix/library/helloworld.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +if [ -f "$1" ]; then + . "$1" +else + echo '{"msg": "No argument file provided", "failed": true}' + exit 1 +fi + +salutation=${salutation:=Hello} +name=${name:=World} + +cat << EOF +{"msg": "${salutation}, ${name}!"} +EOF diff --git a/test/integration/targets/old_style_modules_posix/tasks/main.yml b/test/integration/targets/old_style_modules_posix/tasks/main.yml new file mode 100644 index 00000000000..ba56de5bfc4 --- /dev/null +++ b/test/integration/targets/old_style_modules_posix/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Hello, World! + helloworld: + register: hello_world + +- assert: + that: + - 'hello_world.msg == "Hello, World!"' + +- name: Hello, Ansible! + helloworld: + args: + name: Ansible + register: hello_ansible + +- assert: + that: + - 'hello_ansible.msg == "Hello, Ansible!"' + +- name: Goodbye, Ansible! + helloworld: + args: + salutation: Goodbye + name: Ansible + register: goodbye_ansible + +- assert: + that: + - 'goodbye_ansible.msg == "Goodbye, Ansible!"' + +- name: Execute module directly + command: '/bin/sh {{ role_path }}/library/helloworld.sh' + register: direct + ignore_errors: true + +- assert: + that: + - direct is failed + - | + direct.stdout == '{"msg": "No argument file provided", "failed": true}' diff --git a/test/integration/targets/want_json_modules_posix/aliases b/test/integration/targets/want_json_modules_posix/aliases new file mode 100644 index 00000000000..b59832142f2 --- /dev/null +++ b/test/integration/targets/want_json_modules_posix/aliases @@ -0,0 +1 @@ +shippable/posix/group3 diff --git a/test/integration/targets/want_json_modules_posix/library/helloworld.py b/test/integration/targets/want_json_modules_posix/library/helloworld.py new file mode 100644 index 00000000000..ad0301cbcb9 --- /dev/null +++ b/test/integration/targets/want_json_modules_posix/library/helloworld.py @@ -0,0 +1,31 @@ +#!/usr/bin/python +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +# WANT_JSON + +import json +import sys + +try: + with open(sys.argv[1], 'r') as f: + data = json.load(f) +except (IOError, OSError, IndexError): + print(json.dumps(dict(msg="No argument file provided", failed=True))) + sys.exit(1) + +salutation = data.get('salutation', 'Hello') +name = data.get('name', 'World') +print(json.dumps(dict(msg='%s, %s!' % (salutation, name)))) diff --git a/test/integration/targets/want_json_modules_posix/tasks/main.yml b/test/integration/targets/want_json_modules_posix/tasks/main.yml new file mode 100644 index 00000000000..1dacfd902dd --- /dev/null +++ b/test/integration/targets/want_json_modules_posix/tasks/main.yml @@ -0,0 +1,39 @@ +- name: Hello, World! + helloworld: + register: hello_world + +- assert: + that: + - 'hello_world.msg == "Hello, World!"' + +- name: Hello, Ansible! + helloworld: + args: + name: Ansible + register: hello_ansible + +- assert: + that: + - 'hello_ansible.msg == "Hello, Ansible!"' + +- name: Goodbye, Ansible! + helloworld: + args: + salutation: Goodbye + name: Ansible + register: goodbye_ansible + +- assert: + that: + - 'goodbye_ansible.msg == "Goodbye, Ansible!"' + +- name: Execute module directly + command: '{{ ansible_python_interpreter|default(ansible_playbook_python) }} {{ role_path }}/library/helloworld.py' + register: direct + ignore_errors: true + +- assert: + that: + - direct is failed + - | + direct.stdout == '{"msg": "No argument file provided", "failed": true}' diff --git a/test/sanity/code-smell/shebang.py b/test/sanity/code-smell/shebang.py index 2ab55e8f2c1..a3e607e79f2 100755 --- a/test/sanity/code-smell/shebang.py +++ b/test/sanity/code-smell/shebang.py @@ -28,6 +28,7 @@ def main(): 'test/integration/targets/win_module_utils/library/legacy_only_new_way_win_line_ending.ps1', 'test/integration/targets/win_module_utils/library/legacy_only_old_way_win_line_ending.ps1', 'test/utils/shippable/timing.py', + 'test/integration/targets/old_style_modules_posix/library/helloworld.sh', ]) # see https://unicode.org/faq/utf_bom.html#bom1