Skip to content

Commit

Permalink
[PATCH] Trapping exit in tests, using return for errors: further fixes.
Browse files Browse the repository at this point in the history
"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>
  • Loading branch information
Pavel Roskin authored and Junio C Hamano committed Aug 12, 2005
1 parent 4d9d62f commit 4118427
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions t/test-lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ unset SHA1_FILE_DIRECTORY

error () {
echo "* error: $*"
trap - exit
exit 1
}

Expand Down Expand Up @@ -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.
Expand All @@ -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; }
}


Expand All @@ -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
}

Expand Down Expand Up @@ -132,6 +133,7 @@ test_expect_success () {
}

test_done () {
trap - exit
case "$test_failure" in
0)
# We could:
Expand Down

0 comments on commit 4118427

Please sign in to comment.