X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=t%2Ftest-lib.sh;h=1523d2ebbf1f355fe60ad0d5ef948d24cebc85ad;hb=230f13225df8b7e7eb0acc91a8c630f9e84967c1;hp=5cdd41dd930358b8ef10ac1f3259df150ee50fa5;hpb=d9bdd39eee54ebd77bc01235c00e827ddbe892d0;p=git.git diff --git a/t/test-lib.sh b/t/test-lib.sh index 5cdd41dd..1523d2eb 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 } @@ -63,6 +64,7 @@ do esac done +exec 5>&1 if test "$verbose" = "t" then exec 4>&2 3>&1 @@ -73,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. @@ -88,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; } } @@ -96,15 +100,22 @@ test_debug () { test "$debug" = "" || eval "$1" } +test_run_ () { + eval >&3 2>&4 "$1" + eval_ret="$?" + return 0 +} + test_expect_failure () { test "$#" = 2 || error "bug in the test script: not 2 parameters to test-expect-failure" say >&3 "expecting failure: $2" - if eval >&3 2>&4 "$2" + test_run_ "$2" + if [ "$?" = 0 -a "$eval_ret" != 0 ] then - test_failure_ "$@" - else test_ok_ "$1" + else + test_failure_ "$@" fi } @@ -112,7 +123,8 @@ test_expect_success () { test "$#" = 2 || error "bug in the test script: not 2 parameters to test-expect-success" say >&3 "expecting success: $2" - if eval >&3 2>&4 "$2" + test_run_ "$2" + if [ "$?" = 0 -a "$eval_ret" = 0 ] then test_ok_ "$1" else @@ -121,6 +133,7 @@ test_expect_success () { } test_done () { + trap - exit case "$test_failure" in 0) # We could: