X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=test%2Ftest-lib.sh;h=93867b03c4e05bb96461ab767d2232a36ebb866f;hb=21b13c3932a73fcc906f8bbc13a0f2112bcebfb8;hp=c81c709b511ffbbbee1205379a4dd6ce8ee67e2a;hpb=746a13e6f40431ffa931ef51834ac0eb794ee554;p=notmuch diff --git a/test/test-lib.sh b/test/test-lib.sh index c81c709b..93867b03 100755 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -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. @@ -50,8 +50,6 @@ TZ=UTC TERM=dumb export LANG LC_ALL PAGER TERM TZ GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u} -export SCREENRC=/dev/null -export SYSSCREENRC=/dev/null # Protect ourselves from common misconfiguration to export # CDPATH into the environment @@ -176,6 +174,7 @@ test_success=0 die () { code=$? + rm -rf "$TEST_TMPDIR" if test -n "$GIT_EXIT_OK" then exit $code @@ -186,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 () { @@ -396,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 } @@ -832,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 \ "\$@" @@ -843,12 +846,15 @@ EOF test_emacs () { if [ -z "$EMACS_SERVER" ]; then EMACS_SERVER="notmuch-test-suite-$$" - # start a detached screen session with an emacs server - screen -S "$EMACS_SERVER" -d -m "$TMP_DIRECTORY/run_emacs" \ - --no-window-system \ - --eval "(setq server-name \"$EMACS_SERVER\")" \ - --eval '(server-start)' \ - --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 "$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\")' \ + --eval '(server-start)' \ + --eval '(orphan-watchdog $$)'" || return # wait until the emacs server is up until test_emacs '()' 2>/dev/null; do sleep 1