summaryrefslogtreecommitdiff
path: root/test/integration/targets/callback_default
diff options
context:
space:
mode:
authorSam Doran <sdoran@redhat.com>2021-02-09 12:43:59 -0500
committerGitHub <noreply@github.com>2021-02-09 12:43:59 -0500
commit7d18ea5e93ccccfc415328430898c8d06e325f87 (patch)
tree75005ea613f734d9e261451b3d216f3375799640 /test/integration/targets/callback_default
parentca448f7c350fae8080dcfec648342d2fc8837da0 (diff)
downloadansible-7d18ea5e93ccccfc415328430898c8d06e325f87.tar.gz
default callback - add "show_task_path_on_failure" option (#73260)
When running in verbosity <2, display the file and line number for tasks that fail. This provides useful information without having to run at increased verbosity. * Move _print_task_path to CallbackBase class * Add integration tests * Add color parameter to _print_task_path() * Keep color output consistent for now Currently the path is display with COLOR_DEBUG formatting with verbosity >= 2. Instead of the color of the path changing based on verbosity level, just keep it at the currently behavior of COLOR_DEBUG. Having the color of the same information change based on verbosity level seems incorrect and makes visual parsing of the information more difficult. Co-authored-by: tahar.jegham <jeghamseifeddine@gmail.com>
Diffstat (limited to 'test/integration/targets/callback_default')
-rw-r--r--test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stderr2
-rw-r--r--test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stdout100
-rwxr-xr-xtest/integration/targets/callback_default/runme.sh11
3 files changed, 112 insertions, 1 deletions
diff --git a/test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stderr b/test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stderr
new file mode 100644
index 0000000000..d3e07d472d
--- /dev/null
+++ b/test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stderr
@@ -0,0 +1,2 @@
++ ansible-playbook -i inventory test.yml
+++ set +x
diff --git a/test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stdout b/test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stdout
new file mode 100644
index 0000000000..d9ffd57553
--- /dev/null
+++ b/test/integration/targets/callback_default/callback_default.out.display_path_on_failure.stdout
@@ -0,0 +1,100 @@
+
+PLAY [testhost] ****************************************************************
+
+TASK [Changed task] ************************************************************
+changed: [testhost]
+
+TASK [Ok task] *****************************************************************
+ok: [testhost]
+
+TASK [Failed task] *************************************************************
+task path: TEST_PATH/test.yml:16
+fatal: [testhost]: FAILED! => {"changed": false, "msg": "no reason"}
+...ignoring
+
+TASK [Skipped task] ************************************************************
+skipping: [testhost]
+
+TASK [Task with var in name (foo bar)] *****************************************
+changed: [testhost]
+
+TASK [Loop task] ***************************************************************
+changed: [testhost] => (item=foo-1)
+changed: [testhost] => (item=foo-2)
+changed: [testhost] => (item=foo-3)
+
+TASK [debug loop] **************************************************************
+changed: [testhost] => (item=debug-1) => {
+ "msg": "debug-1"
+}
+failed: [testhost] (item=debug-2) => {
+ "msg": "debug-2"
+}
+ok: [testhost] => (item=debug-3) => {
+ "msg": "debug-3"
+}
+skipping: [testhost] => (item=debug-4)
+task path: TEST_PATH/test.yml:38
+fatal: [testhost]: FAILED! => {"msg": "One or more items failed"}
+...ignoring
+
+TASK [EXPECTED FAILURE Failed task to be rescued] ******************************
+task path: TEST_PATH/test.yml:54
+fatal: [testhost]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}
+
+TASK [Rescue task] *************************************************************
+changed: [testhost]
+
+TASK [include_tasks] ***********************************************************
+included: .../test/integration/targets/callback_default/include_me.yml for testhost => (item=1)
+
+TASK [debug] *******************************************************************
+ok: [testhost] => {
+ "item": 1
+}
+
+TASK [copy] ********************************************************************
+changed: [testhost]
+
+TASK [replace] *****************************************************************
+--- before: .../test_diff.txt
++++ after: .../test_diff.txt
+@@ -1 +1 @@
+-foo
+\ No newline at end of file
++bar
+\ No newline at end of file
+
+changed: [testhost]
+
+TASK [replace] *****************************************************************
+ok: [testhost]
+
+RUNNING HANDLER [Test handler 1] ***********************************************
+changed: [testhost]
+
+RUNNING HANDLER [Test handler 2] ***********************************************
+ok: [testhost]
+
+RUNNING HANDLER [Test handler 3] ***********************************************
+changed: [testhost]
+
+PLAY [testhost] ****************************************************************
+
+TASK [First free task] *********************************************************
+changed: [testhost]
+
+TASK [Second free task] ********************************************************
+changed: [testhost]
+
+TASK [Include some tasks] ******************************************************
+included: .../test/integration/targets/callback_default/include_me.yml for testhost => (item=1)
+
+TASK [debug] *******************************************************************
+ok: [testhost] => {
+ "item": 1
+}
+
+PLAY RECAP *********************************************************************
+testhost : ok=19 changed=11 unreachable=0 failed=0 skipped=1 rescued=1 ignored=2
+
diff --git a/test/integration/targets/callback_default/runme.sh b/test/integration/targets/callback_default/runme.sh
index 934586d725..b5c98ef72b 100755
--- a/test/integration/targets/callback_default/runme.sh
+++ b/test/integration/targets/callback_default/runme.sh
@@ -16,7 +16,7 @@ set -eux
run_test() {
local testname=$1
- # outout was recorded w/o cowsay, ensure we reproduce the same
+ # output was recorded w/o cowsay, ensure we reproduce the same
export ANSIBLE_NOCOWS=1
# The shenanigans with redirection and 'tee' are to capture STDOUT and
@@ -29,6 +29,7 @@ run_test() {
sed -i -e 's/included: .*\/test\/integration/included: ...\/test\/integration/g' "${OUTFILE}.${testname}.stdout"
sed -i -e 's/@@ -1,1 +1,1 @@/@@ -1 +1 @@/g' "${OUTFILE}.${testname}.stdout"
sed -i -e 's/: .*\/test_diff\.txt/: ...\/test_diff.txt/g' "${OUTFILE}.${testname}.stdout"
+ sed -i -e "s#${ANSIBLE_PLAYBOOK_DIR}#TEST_PATH#g" "${OUTFILE}.${testname}.stdout"
diff -u "${ORIGFILE}.${testname}.stdout" "${OUTFILE}.${testname}.stdout" || diff_failure
diff -u "${ORIGFILE}.${testname}.stderr" "${OUTFILE}.${testname}.stderr" || diff_failure
@@ -147,6 +148,14 @@ export ANSIBLE_DISPLAY_OK_HOSTS=1
export ANSIBLE_DISPLAY_FAILED_STDERR=1
run_test failed_to_stderr
+export ANSIBLE_DISPLAY_FAILED_STDERR=0
+
+
+# Test displaying task path on failure
+export ANSIBLE_SHOW_TASK_PATH_ON_FAILURE=1
+run_test display_path_on_failure
+export ANSIBLE_SHOW_TASK_PATH_ON_FAILURE=0
+
# Default settings with unreachable tasks
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=1