[PATCH] test: don't bail out of `run_emacs' too early when missing prereqs

Pieter Praet pieter at praet.org
Sat Jan 14 01:07:41 PST 2012


On Thu, 12 Jan 2012 21:34:29 +0400, Dmitry Kurochkin <dmitry.kurochkin at gmail.com> wrote:
> On Thu, 12 Jan 2012 18:16:59 +0100, Pieter Praet <pieter at praet.org> wrote:
> > When running the Emacs tests in verbose mode, only the first missing
> > prereq is reported because the `run_emacs' function is short-circuited
> > early:
> > 
> >   #+begin_example
> >     emacs: Testing emacs interface
> >      missing prerequisites: [0]  emacs(1)
> >      skipping test: [0]  Basic notmuch-hello view in emacs
> >      SKIP   [0]  Basic notmuch-hello view in emacs
> >   #+end_example
> > 
> > This can lead to situations reminiscent of "dependency hell", so instead
> > of returning based on each individual `test_require_external_prereq's exit
> > status, we now do so by checking $test_subtest_missing_external_prereqs_:
> > 
> >   #+begin_example
> >     emacs: Testing emacs interface
> >      missing prerequisites: [0]  dtach(1) emacs(1) emacsclient(1)
> >      skipping test: [0]  Basic notmuch-hello view in emacs
> >      SKIP   [0]  Basic notmuch-hello view in emacs
> >   #+end_example
> > 
> > Also add missing prereq for dtach(1).
> > 
> > ---
> >  test/test-lib.sh |    6 ++++--
> >  1 files changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/test/test-lib.sh b/test/test-lib.sh
> > index 82767c0..6ec3882 100644
> > --- a/test/test-lib.sh
> > +++ b/test/test-lib.sh
> > @@ -907,8 +907,10 @@ EOF
> >  
> >  test_emacs () {
> >  	# test dependencies beforehand to avoid the waiting loop below
> > -	test_require_external_prereq emacs || return
> > -	test_require_external_prereq emacsclient || return
> > +	test_require_external_prereq dtach
> > +	test_require_external_prereq emacs
> > +	test_require_external_prereq emacsclient
> > +	test -z "$test_subtest_missing_external_prereqs_" || return
> 
> There may be other missing dependencies before test_emacs() is called
> and $test_subtest_missing_external_prereqs_ would not be blank.  [...]

True, hadn't though of that...

> [...] Also, I
> would like to keep the number of functions that use
> $test_subtest_missing_external_prereqs_ minimal.  [...]

Could you elaborate on that?

> [...] How about:
> 
>   missing_dependencies=
>   test_require_... dtach || missing_dependencies=1
>   test_require_... emacs || missing_dependencies=1
>   ...
>   test -z "$missing_dependencies" || return
> 

Agreed!  Patch follows.

> Regards,
>   Dmitry
> 
> >  
> >  	if [ -z "$EMACS_SERVER" ]; then
> >  		server_name="notmuch-test-suite-$$"
> > -- 
> > 1.7.8.1
> > 


Peace

-- 
Pieter


More information about the notmuch mailing list