On Thu, 17 Nov 2011 01:14:07 -0800, Jameson Graef Rollins <jrollins@finestructure.net> wrote: > > However, when I tried to test the tests with the patch applied I ran > into one problem. If I try to run the test suite with dtach > uninstalled, it looks like I'm experiencing a hang on > emacs_deliver_message call. I wonder if either emacs_deliver_message or > test_emacs is not doing the right thing in the case of no dtach. I > think emacs_deliver_message should somehow not require dtach, since it's > not actually testing any display stuff, but because it's currently using > test_emacs, it is somehow implicitly depending on it. Any thoughts on > how to fix that? Quick thought mk_skip_test_emacs () { test_emacs () { echo SKIPPED false } test_emacs } mk_run_test_emacs () { test_emacs () { emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)" } test_emacs } test_emacs () { which dtach >/dev/null 2>&1 || { mk_skip_test_emacs; return; } which emacs >/dev/null 2>&1 || { mk_skip_test_emacs; return; } which emacsclient >/dev/null 2>&1 || { mk_skip_test_emacs; return; } EMACS_SERVER="notmuch-test-suite-$$" # 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 $$)'" || { mk_skip_test_emacs; return; } # wait until the emacs server is up for _ in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 20 1 2 3 4 5 6 7 8 9 30 do if test_emacs '()' 2>/dev/null then mk_run_test_emacs return fi done mk_skip_test_emacs } I.e. dynamically, at run-time, re-create test_emacs function... > > jamie. Tomi