diff options
author | Pavel Roskin <proski@gnu.org> | 2005-08-11 12:00:40 -0400 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-08-11 18:26:16 -0700 |
commit | 41184273d173c252532b3aba730ee7fdf35291f4 (patch) | |
tree | 0bc87413c16aefcbfb5d896043f7fec6b9065262 /t | |
parent | 4d9d62fa7ca01c481d224e2a2187e38ec2f0996a (diff) | |
download | git-41184273d173c252532b3aba730ee7fdf35291f4.tar.gz git-41184273d173c252532b3aba730ee7fdf35291f4.tar.xz |
[PATCH] Trapping exit in tests, using return for errors: further fixes.
"return" from a test would leave the exit trap set, which could cause a
spurious error message if it's the last test in the script or
--immediate is used.
The easiest solution would be to have a global trap that is set when
test-lib.sh is sourced and unset either by test_done(), error() or by
test_failure_() with --immediate.
Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 't')
-rwxr-xr-x | t/test-lib.sh | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/t/test-lib.sh b/t/test-lib.sh index abcf90323..1523d2ebb 100755 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -36,6 +36,7 @@ unset SHA1_FILE_DIRECTORY error () { echo "* error: $*" + trap - exit exit 1 } @@ -74,6 +75,8 @@ fi test_failure=0 test_count=0 +trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit + # You are not expected to call test_ok_ and test_failure_ directly, use # the text_expect_* functions instead. @@ -89,7 +92,7 @@ test_failure_ () { say "FAIL $test_count: $1" shift echo "$@" | sed -e 's/^/ /' - test "$immediate" = "" || exit 1 + test "$immediate" = "" || { trap - exit; exit 1; } } @@ -98,10 +101,8 @@ test_debug () { } test_run_ () { - trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit eval >&3 2>&4 "$1" eval_ret="$?" - trap - exit return 0 } @@ -132,6 +133,7 @@ test_expect_success () { } test_done () { + trap - exit case "$test_failure" in 0) # We could: |