adding quiet option to assert (ansible#27124) (#52032)

* adding quiet option to assert (ansible#27124)

* adding doc for quiet to assert.py

* fixing PEP8 failure

* improving example

* improving docs

* adding changelog fragment

* adding . at end of descriptions

* removing trailing blank line

* adding integration test for assert

* fixing CI complaints

* disabling gather_facts in quiet.yml test

* rerunning to capture skip

* cleaning up python 2 vs 3

* following rebase

* fixing CI complaints

* fixing CI complaints

* fixing CI complaints

* fixing CI complaints

* fixing CI complaints
This commit is contained in:
rwagnergit
2019-02-28 10:25:41 -05:00
committed by Brian Coca
parent 0e9a79a589
commit d2bdbadb03
9 changed files with 134 additions and 7 deletions

View File

@@ -0,0 +1 @@
shippable/posix/group3

View File

@@ -0,0 +1,2 @@
+ ansible-playbook -i localhost, -c local quiet.yml
++ set +x

View File

@@ -0,0 +1,16 @@
PLAY [localhost] ***************************************************************
TASK [assert] ******************************************************************
ok: [localhost] => (item=item_A)
TASK [assert] ******************************************************************
ok: [localhost] => (item=item_A) => {
"changed": false,
"item": "item_A",
"msg": "All assertions passed"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

View File

@@ -0,0 +1,3 @@
[all]
localhost

View File

@@ -0,0 +1,16 @@
---
- hosts: localhost
gather_facts: False
vars:
item_A: yes
tasks:
- assert:
that: "{{ item }} is defined"
quiet: True
with_items:
- item_A
- assert:
that: "{{ item }} is defined"
quiet: False
with_items:
- item_A

View File

@@ -0,0 +1,68 @@
#!/usr/bin/env bash
# This test compares "known good" output with various settings against output
# with the current code. It's brittle by nature, but this is probably the
# "best" approach possible.
#
# Notes:
# * options passed to this script (such as -v) are ignored, as they would change
# the output and break the test
# * the number of asterisks after a "banner" differs is forced to 79 by
# redirecting stdin from /dev/null
set -eux
run_test() {
# testname is playbook name
local testname=$1
# The shenanigans with redirection and 'tee' are to capture STDOUT and
# STDERR separately while still displaying both to the console
{ ansible-playbook -i 'localhost,' -c local "${testname}.yml" \
> >(set +x; tee "${OUTFILE}.${testname}.stdout"); } \
2> >(set +x; tee "${OUTFILE}.${testname}.stderr" >&2) 0</dev/null
perl -pi -e 's/ *$//s' "${OUTFILE}.${testname}.stdout"
perl -pi -e 's/ *$//s' "${OUTFILE}.${testname}.stderr"
diff -u "${ORIGFILE}.${testname}.stdout" "${OUTFILE}.${testname}.stdout" || diff_failure
diff -u "${ORIGFILE}.${testname}.stderr" "${OUTFILE}.${testname}.stderr" || diff_failure
}
diff_failure() {
if [[ $INIT = 0 ]]; then
echo "FAILURE...diff mismatch!"
exit 1
fi
}
cleanup() {
if [[ $INIT = 0 ]]; then
rm -f "${OUTFILE}."*
fi
}
BASEFILE=assert_quiet.out
ORIGFILE="${BASEFILE}"
OUTFILE="${BASEFILE}.new"
trap 'cleanup' EXIT
# The --init flag will (re)generate the "good" output files used by the tests
INIT=0
if [[ ${1:-} == "--init" ]]; then
shift
OUTFILE=$ORIGFILE
INIT=1
fi
# Force the 'default' callback plugin
export ANSIBLE_STDOUT_CALLBACK=default
# Disable color in output for consistency
export ANSIBLE_FORCE_COLOR=0
export ANSIBLE_NOCOLOR=1
# Disable retry files
export ANSIBLE_RETRY_FILES_ENABLED=0
run_test quiet