[PATCH 0/9] test: (hopefully) better test prerequisites

Tomi Ollila tomi.ollila at nixu.com
Thu Nov 17 04:30:12 PST 2011


On Thu, 17 Nov 2011 14:20:19 +0200, Tomi Ollila <tomi.ollila at iki.fi> wrote:

FIXES INLINE; sorry about the duplication.

> On Thu, 17 Nov 2011 01:14:07 -0800, Jameson Graef Rollins <jrollins at 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 "$@"
> }
> 
> 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
                          mk_run_test_emacs "$@"
>                         return
>                 fi
>       done
>       mk_skip_test_emacs
> }
> 
> I.e. dynamically, at run-time, re-create test_emacs function...
> 
> > 
> > jamie.
> 
> Tomi

Tomi


More information about the notmuch mailing list