]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.sh
Clarify usage of `additional_headers' in test/test-lib.sh:generate_message.
[notmuch] / test / test-lib.sh
old mode 100644 (file)
new mode 100755 (executable)
index 68c9cf8..f536172
@@ -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 <<EOF >"$gen_msg_filename"
+    cat <<EOF >"$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