]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.sh
test: move subtest variables reset into a dedicated function
[notmuch] / test / test-lib.sh
old mode 100755 (executable)
new mode 100644 (file)
index d88548b..0735b5c
@@ -174,6 +174,7 @@ test_success=0
 
 die () {
        code=$?
+       rm -rf "$TEST_TMPDIR"
        if test -n "$GIT_EXIT_OK"
        then
                exit $code
@@ -184,6 +185,8 @@ die () {
 }
 
 GIT_EXIT_OK=
+# Note: TEST_TMPDIR *NOT* exported!
+TEST_TMPDIR=$(mktemp -d "${TMPDIR:-/tmp}/notmuch-test-$$.XXXXXX")
 trap 'die' EXIT
 
 test_decode_color () {
@@ -394,7 +397,9 @@ emacs_deliver_message ()
           (message-goto-body)
           (insert \"${body}\")
           $@
-          (message-send-and-exit))" >/dev/null 2>&1
+          (message-send-and-exit))"
+    # opportunistically quit smtp-dummy in case above fails.
+    { echo QUIT > /dev/tcp/localhost/25025; } 2>/dev/null
     wait ${smtp_dummy_pid}
     notmuch new >/dev/null
 }
@@ -424,7 +429,7 @@ test_begin_subtest ()
        error "bug in test script: Missing test_expect_equal in ${BASH_SOURCE[1]}:${BASH_LINENO[0]}"
     fi
     test_subtest_name="$1"
-    test_subtest_known_broken_=
+    test_reset_state_
     # Remember stdout and stderr file descriptors and redirect test
     # output to the previously prepared file descriptors 3 and 4 (see
     # below)
@@ -576,14 +581,14 @@ test_failure_message_ () {
 }
 
 test_known_broken_ok_ () {
-       test_subtest_known_broken_=
+       test_reset_state_
        test_fixed=$(($test_fixed+1))
        say_color pass "%-6s" "FIXED"
        echo " $@"
 }
 
 test_known_broken_failure_ () {
-       test_subtest_known_broken_=
+       test_reset_state_
        test_broken=$(($test_broken+1))
        test_failure_message_ "BROKEN" "$@"
        return 1
@@ -619,7 +624,7 @@ test_skip () {
        fi
        case "$to_skip" in
        t)
-               test_subtest_known_broken_=
+               test_reset_state_
                say_color skip >&3 "skipping test: $@"
                say_color skip "%-6s" "SKIP"
                echo " $1"
@@ -830,7 +835,7 @@ export NOTMUCH_CONFIG=$NOTMUCH_CONFIG
 #
 # --load               Force loading of notmuch.el and test-lib.el
 
-emacs --no-init-file --no-site-file \
+exec emacs --no-init-file --no-site-file \
        --directory "$TEST_DIRECTORY/../emacs" --load notmuch.el \
        --directory "$TEST_DIRECTORY" --load test-lib.el \
        "\$@"
@@ -844,7 +849,7 @@ test_emacs () {
                # start a detached session with an emacs server
                # user's TERM is given to dtach which assumes a minimally
                # VT100-compatible terminal -- and emacs inherits that
-               TERM=$ORIGINAL_TERM dtach -n "$TMP_DIRECTORY/emacs-dtach-socket.$$" \
+               TERM=$ORIGINAL_TERM dtach -n "$TEST_TMPDIR/emacs-dtach-socket.$$" \
                        sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \
                                --no-window-system \
                                --eval '(setq server-name \"$EMACS_SERVER\")' \
@@ -859,6 +864,10 @@ test_emacs () {
        emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)"
 }
 
+test_reset_state_ () {
+       test_subtest_known_broken_=
+}
+
 
 find_notmuch_path ()
 {