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:
Matt Clay 2017-01-20 16:38:52 -08:00 committed by GitHub
parent d87ee022bb
commit 61e6e7868c
8 changed files with 52 additions and 21 deletions

View file

@ -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}"

View file

@ -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') }}"

View file

@ -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

View file

@ -0,0 +1 @@
../template/aliases

View file

@ -0,0 +1,4 @@
- hosts: testhost
gather_facts: True
roles:
- { role: template }

View file

@ -0,0 +1 @@
../../template

View 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 "$@"

View file

@ -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)