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.
This commit is contained in:
parent
d87ee022bb
commit
61e6e7868c
8 changed files with 52 additions and 21 deletions
|
@ -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}"
|
||||
|
|
|
@ -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') }}"
|
||||
|
|
|
@ -16,6 +16,14 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
- 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
|
||||
|
|
1
test/integration/targets/template_jinja2_latest/aliases
Symbolic link
1
test/integration/targets/template_jinja2_latest/aliases
Symbolic link
|
@ -0,0 +1 @@
|
|||
../template/aliases
|
4
test/integration/targets/template_jinja2_latest/main.yml
Normal file
4
test/integration/targets/template_jinja2_latest/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- hosts: testhost
|
||||
gather_facts: True
|
||||
roles:
|
||||
- { role: template }
|
1
test/integration/targets/template_jinja2_latest/roles/template
Symbolic link
1
test/integration/targets/template_jinja2_latest/roles/template
Symbolic link
|
@ -0,0 +1 @@
|
|||
../../template
|
21
test/integration/targets/template_jinja2_latest/runme.sh
Executable file
21
test/integration/targets/template_jinja2_latest/runme.sh
Executable file
|
@ -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 "$@"
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue