]> git.notmuchmail.org Git - notmuch/blobdiff - test/test-lib.sh
test: Add a test script for "notmuch tag"
[notmuch] / test / test-lib.sh
index b1b0db89602838e78c0d9577cd205842c7835bfe..1ea7fa976b8acd01f212c30f9627ceedcde7a9b4 100755 (executable)
@@ -39,7 +39,7 @@ done,*)
        ;;
 esac
 
-# Keep the original TERM for say_color
+# Keep the original TERM for say_color and test_emacs
 ORIGINAL_TERM=$TERM
 
 # For repeatability, reset the environment to known value.
@@ -394,7 +394,7 @@ emacs_deliver_message ()
           (message-goto-body)
           (insert \"${body}\")
           $@
-          (message-send-and-exit))" >/dev/null 2>&1
+          (message-send-and-exit))"
     wait ${smtp_dummy_pid}
     notmuch new >/dev/null
 }
@@ -462,6 +462,7 @@ test_expect_equal ()
     fi
 }
 
+# Like test_expect_equal, but takes two filenames.
 test_expect_equal_file ()
 {
        exec 1>&6 2>&7          # Restore stdout and stderr
@@ -563,6 +564,7 @@ test_failure_ () {
        test_failure=$(($test_failure + 1))
        test_failure_message_ "FAIL" "$@"
        test "$immediate" = "" || { GIT_EXIT_OK=t; exit 1; }
+       return 1
 }
 
 test_failure_message_ () {
@@ -584,6 +586,7 @@ test_known_broken_failure_ () {
        test_subtest_known_broken_=
        test_broken=$(($test_broken+1))
        test_failure_message_ "BROKEN" "$@"
+       return 1
 }
 
 test_debug () {
@@ -722,7 +725,7 @@ test_external_without_stderr () {
        fi
 }
 
-# This is not among top-level (test_expect_success | test_expect_failure)
+# This is not among top-level (test_expect_success)
 # but is a prefix that can be used in the test script, like:
 #
 #      test_expect_success 'complain and die' '
@@ -827,7 +830,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 \
        "\$@"
@@ -838,10 +841,19 @@ EOF
 test_emacs () {
        if [ -z "$EMACS_SERVER" ]; then
                EMACS_SERVER="notmuch-test-suite-$$"
-               "$TMP_DIRECTORY/run_emacs" \
-                       --daemon \
-                       --eval "(setq server-name \"$EMACS_SERVER\")" \
-                       --eval "(orphan-watchdog $$)" || return
+               # 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.$$" \
+                       sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \
+                               --no-window-system \
+                               --eval '(setq server-name \"$EMACS_SERVER\")' \
+                               --eval '(server-start)' \
+                               --eval '(orphan-watchdog $$)'" || return
+               # wait until the emacs server is up
+               until test_emacs '()' 2>/dev/null; do
+                       sleep 1
+               done
        fi
 
        emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)"