Add jinja2 groupby filter override to cast namedtuple to tuple. Fixes #20098 (#20362)

* Add jinja2 groupby filter override to cast namedtuple to tuple. Fixes #20098

* Address some of the requested changes

* Quoting

* Print the python path and version

* Be less explicitly verbose, rely on implicit verbosity
This commit is contained in:
Matt Martz
2017-01-19 13:39:59 -06:00
committed by Toshio Kuratomi
parent 809aa7a653
commit 537b3b75a6
5 changed files with 89 additions and 2 deletions

View File

@@ -27,7 +27,7 @@ UNAME := $(shell uname | tr '[:upper:]' '[:lower:]')
all: other non_destructive destructive
other: ansible test_test_infra parsing test_var_blending test_var_precedence unicode test_templating_settings environment test_as includes blocks pull_run pull_no_127 pull_limit_inventory check_mode test_hash test_handlers test_group_by test_vault test_tags test_lookup_paths no_log test_gathering_facts test_binary_modules_posix test_hosts_field test_lookup_properties args
other: ansible test_test_infra parsing test_var_blending test_var_precedence unicode test_templating_settings environment test_as includes blocks pull_run pull_no_127 pull_limit_inventory check_mode test_hash test_handlers test_group_by test_vault test_tags test_lookup_paths no_log test_gathering_facts test_binary_modules_posix test_hosts_field test_lookup_properties args test_jinja2_groupby
ansible:
(cd targets/ansible && ./runme.sh $(TEST_FLAGS))
@@ -66,6 +66,9 @@ test_gathering_facts:
environment:
(cd targets/environment && ./runme.sh $(TEST_FLAGS))
test_jinja2_groupby:
(cd targets/filters && ./runme.sh $(TEST_FLAGS))
non_destructive: setup
ANSIBLE_ROLES_PATH=$(shell pwd)/targets ansible-playbook non_destructive.yml -i $(INVENTORY) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS)

View File

@@ -0,0 +1 @@
posix/ci/group2

View File

@@ -0,0 +1,35 @@
#!/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')
# 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
virtualenv --system-site-packages $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 "$@"
pip install -U "jinja2<2.9.0"
ansible-playbook -i ../../inventory test_jinja2_groupby.yml -v "$@"
deactivate
rm -r "${MYTMPDIR}"

View File

@@ -0,0 +1,24 @@
---
- name: Test jinja2 groupby
hosts: localhost
gather_facts: False
connection: local
vars:
fruits:
- name: apple
enjoy: yes
- name: orange
enjoy: no
- name: strawberry
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') }}"
- set_fact:
result: "{{ fruits | groupby('enjoy') }}"
- assert:
that:
- result == expected