[PATCH] test: use dtach(1) instead of screen(1) in emacs tests

Tomi Ollila too at iki.fi
Fri Nov 11 12:48:13 PST 2011


dtach is simpler than screen and is not setuid/setgid program so
TMPDIR does not get cleared by dynamic loader when executed.
---

Updated version after discussion with DmitryKurochkin and amdragon
on IRC. Thank you.

 test/test-lib.sh |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/test/test-lib.sh b/test/test-lib.sh
index c81c709..c232130 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 emacs tests
 ORIGINAL_TERM=$TERM
 
 # For repeatability, reset the environment to known value.
@@ -843,12 +841,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 "$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
-- 
1.7.6.1



More information about the notmuch mailing list