git » chasquid » commit 88789c8

test: Properly exit with non-0 status on errors

author Alberto Bertogli
2018-04-09 21:33:22 UTC
committer Alberto Bertogli
2018-04-09 21:51:01 UTC
parent 24af22ac35fd6b779efcd25e0c81826367f8b8dc

test: Properly exit with non-0 status on errors

SIGTERM can happen normally in our tests, and the current code has a
trap that makes it trigger a clean exit.

This causes some errors to be masked, as we end up calling "exit 0" when
they occur. The error message will still be displayed, but the caller
script will assume it worked.

This patch fixes the problem by adjusting the bash signal handlers, so
that we ignore SIGTERM (so bash does not get killed by the exit handler)
and exit with error on SIGINT (triggered by ctrl-c).

Note that under some conditions the SIGTERM trap is not necessary, but
this depends on the environment.

test/util/lib.sh +3 -3

diff --git a/test/util/lib.sh b/test/util/lib.sh
index 4fe2ece..6e1b4ea 100644
--- a/test/util/lib.sh
+++ b/test/util/lib.sh
@@ -19,9 +19,9 @@ function init() {
 	rm -rf .mail
 
 	# Set traps to kill our subprocesses when we exit (for any reason).
-	# https://stackoverflow.com/questions/360201/
-	trap "exit" INT TERM
-	trap "kill 0" EXIT
+	trap ":" TERM      # Avoid the EXIT handler from killing bash.
+	trap "exit 2" INT  # Ctrl-C, make sure we fail in that case.
+	trap "kill 0" EXIT # Kill children on exit.
 }
 
 function chasquid() {