X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=test%2Ftest-lib.sh;h=f53617258ae8bfca73642de89b7d39eadad03354;hb=22443de7891ca54cc199c30bdaf2725395062462;hp=68c9cf8a499e105f17112b3064c249665570c53a;hpb=ac9dbb47de734afb0ddd4d0b2eb8f5027b1a7f60;p=notmuch diff --git a/test/test-lib.sh b/test/test-lib.sh old mode 100644 new mode 100755 index 68c9cf8a..f5361725 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -144,7 +144,7 @@ else fi error () { - say_color error "error: $*" + say_color error "error: $*\n" GIT_EXIT_OK=t exit 1 } @@ -351,8 +351,11 @@ ${additional_headers}" ${additional_headers}" fi + # Note that in the way we're setting it above and using it below, + # `additional_headers' will also serve as the header / body separator + # (empty line in between). -cat <"$gen_msg_filename" + cat <"$gen_msg_filename" From: ${template[from]} To: ${template[to]} Message-Id: <${gen_msg_id}> @@ -396,12 +399,17 @@ add_email_corpus () test_begin_subtest () { + if [ -n "$inside_subtest" ]; then + exec 1>&6 2>&7 # Restore stdout and stderr + error "bug in test script: Missing test_expect_equal in ${BASH_SOURCE[1]}:${BASH_LINENO[0]}" + fi test_subtest_name="$1" # Remember stdout and stderr file descriptios and redirect test # output to the previously prepared file descriptors 3 and 4 (see - # bellow) + # below) if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi exec 6>&1 7>&2 >&3 2>&4 + inside_subtest=t } # Pass test if two arguments match @@ -413,6 +421,7 @@ test_begin_subtest () test_expect_equal () { exec 1>&6 2>&7 # Restore stdout and stderr + inside_subtest= test "$#" = 3 && { prereq=$1; shift; } || prereq= test "$#" = 2 || error "bug in the test script: not 2 or 3 parameters to test_expect_equal" @@ -434,6 +443,8 @@ test_expect_equal () test_expect_equal_failure () { + exec 1>&6 2>&7 # Restore stdout and stderr + inside_subtest= test "$#" = 3 && { prereq=$1; shift; } || prereq= test "$#" = 2 || error "bug in the test script: not 2 or 3 parameters to test_expect_equal" @@ -446,6 +457,9 @@ test_expect_equal_failure () test_known_broken_ok_ "$test_subtest_name" else test_known_broken_failure_ "$test_subtest_name" + testname=$this_test.$test_count + echo "$expected" > $testname.expected + echo "$output" > $testname.output fi fi } @@ -746,7 +760,9 @@ test_done () { echo if [ "$test_failure" = "0" ]; then - rm -rf "$remove_tmp" + if [ "$test_broken" = "0" ]; then + rm -rf "$remove_tmp" + fi exit 0 else exit 1