From 61e6e7868c5e6b4ae98bd1358f3a796935f7f949 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Fri, 20 Jan 2017 16:38:52 -0800 Subject: [PATCH] Improve jinja2 test coverage. (#20533) * Run `template` test on latest jinja2 version. * Update jinja2 install for groupby_filter. * Clean test output dir for each test. --- .../targets/groupby_filter/runme.sh | 18 ++++------------ .../groupby_filter/test_jinja2_groupby.yml | 11 +++++++--- .../targets/template/tasks/main.yml | 8 +++++++ .../targets/template_jinja2_latest/aliases | 1 + .../targets/template_jinja2_latest/main.yml | 4 ++++ .../template_jinja2_latest/roles/template | 1 + .../targets/template_jinja2_latest/runme.sh | 21 +++++++++++++++++++ test/runner/lib/executor.py | 9 ++++---- 8 files changed, 52 insertions(+), 21 deletions(-) create mode 120000 test/integration/targets/template_jinja2_latest/aliases create mode 100644 test/integration/targets/template_jinja2_latest/main.yml create mode 120000 test/integration/targets/template_jinja2_latest/roles/template create mode 100755 test/integration/targets/template_jinja2_latest/runme.sh diff --git a/test/integration/targets/groupby_filter/runme.sh b/test/integration/targets/groupby_filter/runme.sh index 9c4c5afeb72..8f9fce9b568 100755 --- a/test/integration/targets/groupby_filter/runme.sh +++ b/test/integration/targets/groupby_filter/runme.sh @@ -5,23 +5,17 @@ set -ex MYTMPDIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir') +trap 'rm -rf "${MYTMPDIR}"' EXIT + # This is needed for the ubuntu1604py3 tests # Ubuntu patches virtualenv to make the default python2 # but for the python3 tests we need virtualenv to use python3 -if [ -f /usr/bin/python3 ] -then - PYTHON="--python /usr/bin/python3" -else - PYTHON="" -fi +PYTHON=$("python${ANSIBLE_TEST_PYTHON_VERSION:-}" -c "import sys; print(sys.executable)") -virtualenv --system-site-packages $PYTHON "${MYTMPDIR}/jinja2" +virtualenv --system-site-packages --python "${PYTHON}" "${MYTMPDIR}/jinja2" source "${MYTMPDIR}/jinja2/bin/activate" -which python -python -V - pip install -U jinja2==2.9.4 ansible-playbook -i ../../inventory test_jinja2_groupby.yml -v "$@" @@ -29,7 +23,3 @@ ansible-playbook -i ../../inventory test_jinja2_groupby.yml -v "$@" pip install -U "jinja2<2.9.0" ansible-playbook -i ../../inventory test_jinja2_groupby.yml -v "$@" - -deactivate - -rm -r "${MYTMPDIR}" diff --git a/test/integration/targets/groupby_filter/test_jinja2_groupby.yml b/test/integration/targets/groupby_filter/test_jinja2_groupby.yml index b83c6f7ab32..3cd02959cab 100644 --- a/test/integration/targets/groupby_filter/test_jinja2_groupby.yml +++ b/test/integration/targets/groupby_filter/test_jinja2_groupby.yml @@ -1,7 +1,7 @@ --- - name: Test jinja2 groupby hosts: localhost - gather_facts: False + gather_facts: True connection: local vars: fruits: @@ -13,8 +13,13 @@ enjoy: yes expected: [[false, [{"enjoy": false, "name": "orange"}]], [true, [{"enjoy": true, "name": "apple"}, {"enjoy": true, "name": "strawberry"}]]] tasks: - - debug: - msg: "{{ lookup('pipe', 'pip freeze | grep -i jinja2') }}" + - name: show python interpreter + debug: + msg: "{{ ansible_python['executable'] }}" + + - name: show jinja2 version + debug: + msg: "{{ lookup('pipe', '{{ ansible_python[\"executable\"] }} -c \"import jinja2; print(jinja2.__version__)\"') }}" - set_fact: result: "{{ fruits | groupby('enjoy') }}" diff --git a/test/integration/targets/template/tasks/main.yml b/test/integration/targets/template/tasks/main.yml index d61b910c1e1..c1325321eec 100644 --- a/test/integration/targets/template/tasks/main.yml +++ b/test/integration/targets/template/tasks/main.yml @@ -16,6 +16,14 @@ # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . +- name: show python interpreter + debug: + msg: "{{ ansible_python['executable'] }}" + +- name: show jinja2 version + debug: + msg: "{{ lookup('pipe', '{{ ansible_python[\"executable\"] }} -c \"import jinja2; print(jinja2.__version__)\"') }}" + - name: get default group shell: id -gn register: group diff --git a/test/integration/targets/template_jinja2_latest/aliases b/test/integration/targets/template_jinja2_latest/aliases new file mode 120000 index 00000000000..843d113c1cf --- /dev/null +++ b/test/integration/targets/template_jinja2_latest/aliases @@ -0,0 +1 @@ +../template/aliases \ No newline at end of file diff --git a/test/integration/targets/template_jinja2_latest/main.yml b/test/integration/targets/template_jinja2_latest/main.yml new file mode 100644 index 00000000000..aa7d64330c4 --- /dev/null +++ b/test/integration/targets/template_jinja2_latest/main.yml @@ -0,0 +1,4 @@ +- hosts: testhost + gather_facts: True + roles: + - { role: template } diff --git a/test/integration/targets/template_jinja2_latest/roles/template b/test/integration/targets/template_jinja2_latest/roles/template new file mode 120000 index 00000000000..8bed5e1595c --- /dev/null +++ b/test/integration/targets/template_jinja2_latest/roles/template @@ -0,0 +1 @@ +../../template \ No newline at end of file diff --git a/test/integration/targets/template_jinja2_latest/runme.sh b/test/integration/targets/template_jinja2_latest/runme.sh new file mode 100755 index 00000000000..3c705e19a06 --- /dev/null +++ b/test/integration/targets/template_jinja2_latest/runme.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# We don't set -u here, due to pypa/virtualenv#150 +set -ex + +MYTMPDIR=$(mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir') + +trap 'rm -rf "${MYTMPDIR}"' EXIT + +# This is needed for the ubuntu1604py3 tests +# Ubuntu patches virtualenv to make the default python2 +# but for the python3 tests we need virtualenv to use python3 +PYTHON=$("python${ANSIBLE_TEST_PYTHON_VERSION:-}" -c "import sys; print(sys.executable)") + +virtualenv --system-site-packages --python "${PYTHON}" "${MYTMPDIR}/jinja2" + +source "${MYTMPDIR}/jinja2/bin/activate" + +pip install -U jinja2 + +ansible-playbook -i ../../inventory main.yml -e @../../integration_config.yml -v "$@" diff --git a/test/runner/lib/executor.py b/test/runner/lib/executor.py index fcbb428a399..57efbe2bb08 100644 --- a/test/runner/lib/executor.py +++ b/test/runner/lib/executor.py @@ -426,10 +426,6 @@ def command_integration_filtered(args, targets): test_dir = os.path.expanduser('~/ansible_testing') - if not args.explain: - remove_tree(test_dir) - make_dirs(test_dir) - if any('needs/ssh/' in target.aliases for target in targets): max_tries = 20 display.info('SSH service required for tests. Checking to make sure we can connect.') @@ -461,6 +457,11 @@ def command_integration_filtered(args, targets): while tries: tries -= 1 + if not args.explain: + # create a fresh test directory for each test target + remove_tree(test_dir) + make_dirs(test_dir) + try: if target.script_path: command_integration_script(args, target)