test/test-lib.sh: use $test_subtest_name in all tests

Set the variable '$test_subtest_name' in all functions which starts
a new test and use that variable in all functions that output
test results.

Additionally output the latest '$test_subtest_name' in case of
abnormal exit, to avoid confusion.
This commit is contained in:
Tomi Ollila 2013-01-21 05:01:45 +02:00 committed by David Bremner
parent 3901bbca2e
commit 3a15602d8e

View file

@ -201,7 +201,11 @@ die () {
then
exit $code
else
echo >&5 "FATAL: Unexpected exit with code $code"
exec >&5
say_color error '%-6s' FATAL
echo " $test_subtest_name"
echo
echo "Unexpected exit while executing $0. Exit code $code."
exit 1
fi
}
@ -498,12 +502,12 @@ test_expect_equal ()
if ! test_skip "$test_subtest_name"
then
if [ "$output" = "$expected" ]; then
test_ok_ "$test_subtest_name"
test_ok_
else
testname=$this_test.$test_count
echo "$expected" > $testname.expected
echo "$output" > $testname.output
test_failure_ "$test_subtest_name" "$(diff -u $testname.expected $testname.output)"
test_failure_ "$(diff -u $testname.expected $testname.output)"
fi
fi
}
@ -524,12 +528,12 @@ test_expect_equal_file ()
if ! test_skip "$test_subtest_name"
then
if diff -q "$file1" "$file2" >/dev/null ; then
test_ok_ "$test_subtest_name"
test_ok_
else
testname=$this_test.$test_count
cp "$file1" "$testname.$basename1"
cp "$file2" "$testname.$basename2"
test_failure_ "$test_subtest_name" "$(diff -u "$testname.$basename1" "$testname.$basename2")"
test_failure_ "$(diff -u "$testname.$basename1" "$testname.$basename2")"
fi
fi
}
@ -567,9 +571,9 @@ test_emacs_expect_t () {
result=$(cat OUTPUT)
if [ "$result" = t ]
then
test_ok_ "$test_subtest_name"
test_ok_
else
test_failure_ "$test_subtest_name" "${result}"
test_failure_ "${result}"
fi
else
# Restore state after the (non) test.
@ -670,12 +674,12 @@ test_require_external_prereq () {
test_ok_ () {
if test "$test_subtest_known_broken_" = "t"; then
test_known_broken_ok_ "$@"
test_known_broken_ok_
return
fi
test_success=$(($test_success + 1))
say_color pass "%-6s" "PASS"
echo " $@"
echo " $test_subtest_name"
}
test_failure_ () {
@ -684,7 +688,7 @@ test_failure_ () {
return
fi
test_failure=$(($test_failure + 1))
test_failure_message_ "FAIL" "$@"
test_failure_message_ "FAIL" "$test_subtest_name" "$@"
test "$immediate" = "" || { GIT_EXIT_OK=t; exit 1; }
return 1
}
@ -701,13 +705,13 @@ test_known_broken_ok_ () {
test_reset_state_
test_fixed=$(($test_fixed+1))
say_color pass "%-6s" "FIXED"
echo " $@"
echo " $test_subtest_name"
}
test_known_broken_failure_ () {
test_reset_state_
test_broken=$(($test_broken+1))
test_failure_message_ "BROKEN" "$@"
test_failure_message_ "BROKEN" "$test_subtest_name" "$@"
return 1
}
@ -775,6 +779,7 @@ test_expect_success () {
test "$#" = 3 && { prereq=$1; shift; } || prereq=
test "$#" = 2 ||
error "bug in the test script: not 2 or 3 parameters to test-expect-success"
test_subtest_name="$1"
test_reset_state_
if ! test_skip "$@"
then
@ -784,9 +789,9 @@ test_expect_success () {
test_check_missing_external_prereqs_ "$@" ||
if [ "$run_ret" = 0 -a "$eval_ret" = 0 ]
then
test_ok_ "$1"
test_ok_
else
test_failure_ "$@"
test_failure_ "$2"
fi
fi
}
@ -795,6 +800,7 @@ test_expect_code () {
test "$#" = 4 && { prereq=$1; shift; } || prereq=
test "$#" = 3 ||
error "bug in the test script: not 3 or 4 parameters to test-expect-code"
test_subtest_name="$2"
test_reset_state_
if ! test_skip "$@"
then
@ -804,9 +810,9 @@ test_expect_code () {
test_check_missing_external_prereqs_ "$@" ||
if [ "$run_ret" = 0 -a "$eval_ret" = "$1" ]
then
test_ok_ "$2"
test_ok_
else
test_failure_ "$@"
test_failure_ "exit code $eval_ret, expected $1" "$3"
fi
fi
}
@ -823,10 +829,10 @@ test_external () {
test "$#" = 4 && { prereq=$1; shift; } || prereq=
test "$#" = 3 ||
error >&5 "bug in the test script: not 3 or 4 parameters to test_external"
descr="$1"
test_subtest_name="$1"
shift
test_reset_state_
if ! test_skip "$descr" "$@"
if ! test_skip "$test_subtest_name" "$@"
then
# Announce the script to reduce confusion about the
# test output that follows.
@ -837,9 +843,9 @@ test_external () {
"$@" 2>&4
if [ "$?" = 0 ]
then
test_ok_ "$descr"
test_ok_
else
test_failure_ "$descr" "$@"
test_failure_ "$@"
fi
fi
}
@ -853,11 +859,11 @@ test_external_without_stderr () {
stderr="$tmp/git-external-stderr.$$.tmp"
test_external "$@" 4> "$stderr"
[ -f "$stderr" ] || error "Internal error: $stderr disappeared."
descr="no stderr: $1"
test_subtest_name="no stderr: $1"
shift
if [ ! -s "$stderr" ]; then
rm "$stderr"
test_ok_ "$descr"
test_ok_
else
if [ "$verbose" = t ]; then
output=`echo; echo Stderr is:; cat "$stderr"`
@ -866,7 +872,7 @@ test_external_without_stderr () {
fi
# rm first in case test_failure exits.
rm "$stderr"
test_failure_ "$descr" "$@" "$output"
test_failure_ "$@" "$output"
fi
}