Re: [PATCH] test: don't bail out of `run_emacs' too early when missing prereqs
authorPieter Praet <pieter@praet.org>
Mon, 16 Jan 2012 10:40:05 +0000 (11:40 +0100)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:42:14 +0000 (09:42 -0800)
33/4821a6e133ca85e9d71df198e92bf9ce150ac4 [new file with mode: 0644]

diff --git a/33/4821a6e133ca85e9d71df198e92bf9ce150ac4 b/33/4821a6e133ca85e9d71df198e92bf9ce150ac4
new file mode 100644 (file)
index 0000000..8f7abd4
--- /dev/null
@@ -0,0 +1,171 @@
+Return-Path: <pieter@praet.org>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id EB8AF431E62\r
+       for <notmuch@notmuchmail.org>; Mon, 16 Jan 2012 02:41:56 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+       tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id LTd40fZoiLhq for <notmuch@notmuchmail.org>;\r
+       Mon, 16 Jan 2012 02:41:56 -0800 (PST)\r
+Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com\r
+       [209.85.212.181]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 212A7431FC0\r
+       for <notmuch@notmuchmail.org>; Mon, 16 Jan 2012 02:41:56 -0800 (PST)\r
+Received: by wibhr12 with SMTP id hr12so2267738wib.26\r
+       for <notmuch@notmuchmail.org>; Mon, 16 Jan 2012 02:41:55 -0800 (PST)\r
+Received: by 10.180.73.72 with SMTP id j8mr8034937wiv.2.1326710515004;\r
+       Mon, 16 Jan 2012 02:41:55 -0800 (PST)\r
+Received: from localhost ([109.131.75.86])\r
+       by mx.google.com with ESMTPS id 28sm21753599wby.3.2012.01.16.02.41.53\r
+       (version=TLSv1/SSLv3 cipher=OTHER);\r
+       Mon, 16 Jan 2012 02:41:54 -0800 (PST)\r
+From: Pieter Praet <pieter@praet.org>\r
+To: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>\r
+Subject: Re: [PATCH] test: don't bail out of `run_emacs' too early when\r
+       missing prereqs\r
+In-Reply-To: <871ur1nk6i.fsf@gmail.com>\r
+References: <87d3aolu61.fsf@praet.org>\r
+       <1326388619-17422-1-git-send-email-pieter@praet.org>\r
+       <87zkdsg6ze.fsf@gmail.com> <87mx9qps82.fsf@praet.org>\r
+       <871ur1nk6i.fsf@gmail.com>\r
+User-Agent: Notmuch/0.11+78~g6c58370 (http://notmuchmail.org) Emacs/23.3.1\r
+       (x86_64-unknown-linux-gnu)\r
+Date: Mon, 16 Jan 2012 11:40:05 +0100\r
+Message-ID: <87y5t80w3e.fsf@praet.org>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=us-ascii\r
+Cc: Notmuch Mail <notmuch@notmuchmail.org>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Mon, 16 Jan 2012 10:41:57 -0000\r
+\r
+On Sun, 15 Jan 2012 17:56:37 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:\r
+> On Sat, 14 Jan 2012 10:07:41 +0100, Pieter Praet <pieter@praet.org> wrote:\r
+> > On Thu, 12 Jan 2012 21:34:29 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:\r
+> > > On Thu, 12 Jan 2012 18:16:59 +0100, Pieter Praet <pieter@praet.org> wrote:\r
+> > > > When running the Emacs tests in verbose mode, only the first missing\r
+> > > > prereq is reported because the `run_emacs' function is short-circuited\r
+> > > > early:\r
+> > > > \r
+> > > >   #+begin_example\r
+> > > >     emacs: Testing emacs interface\r
+> > > >      missing prerequisites: [0]  emacs(1)\r
+> > > >      skipping test: [0]  Basic notmuch-hello view in emacs\r
+> > > >      SKIP   [0]  Basic notmuch-hello view in emacs\r
+> > > >   #+end_example\r
+> > > > \r
+> > > > This can lead to situations reminiscent of "dependency hell", so instead\r
+> > > > of returning based on each individual `test_require_external_prereq's exit\r
+> > > > status, we now do so by checking $test_subtest_missing_external_prereqs_:\r
+> > > > \r
+> > > >   #+begin_example\r
+> > > >     emacs: Testing emacs interface\r
+> > > >      missing prerequisites: [0]  dtach(1) emacs(1) emacsclient(1)\r
+> > > >      skipping test: [0]  Basic notmuch-hello view in emacs\r
+> > > >      SKIP   [0]  Basic notmuch-hello view in emacs\r
+> > > >   #+end_example\r
+> > > > \r
+> > > > Also add missing prereq for dtach(1).\r
+> > > > \r
+> > > > ---\r
+> > > >  test/test-lib.sh |    6 ++++--\r
+> > > >  1 files changed, 4 insertions(+), 2 deletions(-)\r
+> > > > \r
+> > > > diff --git a/test/test-lib.sh b/test/test-lib.sh\r
+> > > > index 82767c0..6ec3882 100644\r
+> > > > --- a/test/test-lib.sh\r
+> > > > +++ b/test/test-lib.sh\r
+> > > > @@ -907,8 +907,10 @@ EOF\r
+> > > >  \r
+> > > >  test_emacs () {\r
+> > > >        # test dependencies beforehand to avoid the waiting loop below\r
+> > > > -      test_require_external_prereq emacs || return\r
+> > > > -      test_require_external_prereq emacsclient || return\r
+> > > > +      test_require_external_prereq dtach\r
+> > > > +      test_require_external_prereq emacs\r
+> > > > +      test_require_external_prereq emacsclient\r
+> > > > +      test -z "$test_subtest_missing_external_prereqs_" || return\r
+> > > \r
+> > > There may be other missing dependencies before test_emacs() is called\r
+> > > and $test_subtest_missing_external_prereqs_ would not be blank.  [...]\r
+> > \r
+> > True, hadn't though of that...\r
+> > \r
+> > > [...] Also, I\r
+> > > would like to keep the number of functions that use\r
+> > > $test_subtest_missing_external_prereqs_ minimal.  [...]\r
+> > \r
+> > Could you elaborate on that?\r
+> > \r
+> \r
+> This variable is supposed to be internal.  I would like to be able to\r
+> change it's meaning or replace it with something better with minimal\r
+> changes in the other code.  So I prefer it to be used only by few\r
+> "low-level" dependency functions.\r
+> \r
+\r
+Ok, thanks!\r
+\r
+\r
+> This is not some strict rule, in other situation I may agree that using\r
+> $test_subtest_missing_external_prereqs_ directly is the best option.\r
+> But in this case, introducing a local variable with clean and simple\r
+> meaning is better IMO.\r
+> \r
+\r
+Agreed.\r
+\r
+\r
+> Regards,\r
+>   Dmitry\r
+> \r
+> > > [...] How about:\r
+> > > \r
+> > >   missing_dependencies=\r
+> > >   test_require_... dtach || missing_dependencies=1\r
+> > >   test_require_... emacs || missing_dependencies=1\r
+> > >   ...\r
+> > >   test -z "$missing_dependencies" || return\r
+> > > \r
+> > \r
+> > Agreed!  Patch follows.\r
+> > \r
+> > > Regards,\r
+> > >   Dmitry\r
+> > > \r
+> > > >  \r
+> > > >        if [ -z "$EMACS_SERVER" ]; then\r
+> > > >                server_name="notmuch-test-suite-$$"\r
+> > > > -- \r
+> > > > 1.7.8.1\r
+> > > > \r
+> > \r
+> > \r
+> > Peace\r
+> > \r
+> > -- \r
+> > Pieter\r
+\r
+\r
+Peace\r
+\r
+-- \r
+Pieter\r