Hi Thomas. On Wed, 20 Jul 2011 14:36:36 +0200, Thomas Jost <schnouki@schnouki.net> wrote: > Before this change, the test suite reported many failed tests on machines where > screen is not installed (which is the case of many *BSD systems). This patch > makes the test suite try to use tmux, another terminal multiplexer, if screen is > not available. This is a nice improvement. But I think we should make it even better :) There are more terminal emulators besides screen and tmux (dtach comes to mind). We need a more general mechanism for trying them. There should be a list of commands for running terminal emulators in the order of preference (I think that is dtach, tmux, screen), and we should try each one in a loop (this would also avoid repeating the long emacs command). Regards, Dmitry > --- > test/test-lib.sh | 13 +++++++++++-- > 1 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/test/test-lib.sh b/test/test-lib.sh > index 0608e42..5851b3d 100755 > --- a/test/test-lib.sh > +++ b/test/test-lib.sh > @@ -860,12 +860,21 @@ EOF > test_emacs () { > if [ -z "$EMACS_SERVER" ]; then > EMACS_SERVER="notmuch-test-suite-$$" > - # start a detached screen session with an emacs server > + # start a detached screen or tmux 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 > + --eval "(orphan-watchdog $$)" > + if [ "$?" != 0 ] > + then > + tmux -f /dev/null -L "$EMACS_SERVER" new-session -d "$TMP_DIRECTORY/run_emacs \ > + --no-window-system \ > + --eval \"(setq server-name \\\"$EMACS_SERVER\\\")\" \ > + --eval '(server-start)' \ > + --eval \"(orphan-watchdog $$)\"" || return > + fi > + > # wait until the emacs server is up > until test_emacs '()' 2>/dev/null; do > sleep 1 > -- > 1.7.6 >