test/test-lib.sh: separate signaled exit
authorTomi Ollila <tomi.ollila@iki.fi>
Mon, 21 Jan 2013 03:01:46 +0000 (05:01 +0200)
committerDavid Bremner <bremner@debian.org>
Tue, 19 Feb 2013 00:17:17 +0000 (20:17 -0400)
When execution of tests is interrupted by signal coming outside of the
test system itself, output just one line "interrupted by signal <num>"
message to standard output. This distinguishes the case from internal
exit and reduces noise.

test/test-lib.sh

index 210e2060987ea8b70751a26eba923e8e7bf8ab0d..ffab1bb509c400e15948b7fbe5df83d6294187d2 100644 (file)
@@ -194,9 +194,15 @@ test_fixed=0
 test_broken=0
 test_success=0
 
-die () {
+_die_common () {
        code=$?
+       trap - EXIT
+       set +ex
        rm -rf "$TEST_TMPDIR"
+}
+
+die () {
+       _die_common
        if test -n "$GIT_EXIT_OK"
        then
                exit $code
@@ -210,10 +216,17 @@ die () {
        fi
 }
 
+die_signal () {
+       _die_common
+       echo >&5 "FATAL: $0: interrupted by signal" $((code - 128))
+       exit $code
+}
+
 GIT_EXIT_OK=
 # Note: TEST_TMPDIR *NOT* exported!
 TEST_TMPDIR=$(mktemp -d "${TMPDIR:-/tmp}/notmuch-test-$$.XXXXXX")
 trap 'die' EXIT
+trap 'die_signal' HUP INT TERM
 
 test_decode_color () {
        sed     -e 's/.\[1m/<WHITE>/g' \