From: Brandon Casey <drafnel@xxxxxxxxx> Commit 6e7b5aaf introduced the concept of GIT_EXIT_OK as a way to indicate to die(), the exit handler, whether the exit was initiated by the test harness, or whether it was unexpected. die() expects $? to contain the value passed to exit(), and when GIT_EXIT_OK is set, die() calls exit with the value in $?. This works as expected when using the Bash shell. For the Korn shell, $? has the value of the last executed statement _before_ the call to exit. If that statement completed successfully, then die() would incorrectly exit with a successful status when GIT_EXIT_OK is set. So, rather than relying on the behavior of Bash in order to get the exit code from $? inside die(), change GIT_EXIT_OK into GIT_EXIT_CODE, and set it to the code that we want to exit with. This allows the test suite to be run with the Korn shell. Signed-off-by: Brandon Casey <casey@xxxxxxxxxxxxxxx> --- t/test-lib.sh | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/t/test-lib.sh b/t/test-lib.sh index f2ca536..64e793a 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -150,7 +150,7 @@ fi error () { say_color error "error: $*" - GIT_EXIT_OK=t + GIT_EXIT_CODE=1 exit 1 } @@ -183,16 +183,16 @@ test_success=0 die () { code=$? - if test -n "$GIT_EXIT_OK" + if test -n "$GIT_EXIT_CODE" then - exit $code + exit $GIT_EXIT_CODE else echo >&5 "FATAL: Unexpected exit with code $code" exit 1 fi } -GIT_EXIT_OK= +GIT_EXIT_CODE= trap 'die' EXIT # The semantics of the editor variables are that of invoking @@ -295,7 +295,7 @@ test_failure_ () { say_color error "FAIL $test_count: $1" shift echo "$@" | sed -e 's/^/ /' - test "$immediate" = "" || { GIT_EXIT_OK=t; exit 1; } + test "$immediate" = "" || { GIT_EXIT_CODE=1; exit 1; } } test_known_broken_ok_ () { @@ -508,7 +508,6 @@ test_create_repo () { } test_done () { - GIT_EXIT_OK=t test_results_dir="$TEST_DIRECTORY/test-results" mkdir -p "$test_results_dir" test_results_path="$test_results_dir/${0%.sh}-$$" @@ -539,9 +538,11 @@ test_done () { cd "$(dirname "$remove_trash")" && rm -rf "$(basename "$remove_trash")" + GIT_EXIT_CODE=0 exit 0 ;; *) + GIT_EXIT_CODE=1 say_color error "failed $test_failure among $msg" exit 1 ;; @@ -655,7 +656,7 @@ case "$test" in esac test ! -z "$debug" || remove_trash=$TRASH_DIRECTORY rm -fr "$test" || { - GIT_EXIT_OK=t + GIT_EXIT_CODE=1 echo >&5 "FATAL: Cannot prepare test area" exit 1 } -- 1.6.5.rc3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html