aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2005-08-11 12:00:40 -0400
committerJunio C Hamano <junkio@cox.net>2005-08-11 18:26:16 -0700
commit41184273d173c252532b3aba730ee7fdf35291f4 (patch)
tree0bc87413c16aefcbfb5d896043f7fec6b9065262
parent4d9d62fa7ca01c481d224e2a2187e38ec2f0996a (diff)
downloadgit-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>
-rwxr-xr-xt/test-lib.sh8
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: