Re: [PATCH] test: don't bail out of `run_emacs' too early when missing prereqs
authorDmitry Kurochkin <dmitry.kurochkin@gmail.com>
Sun, 15 Jan 2012 13:56:37 +0000 (17:56 +0400)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:42:12 +0000 (09:42 -0800)
d7/e13294f90577ac4570866574a9029fbf31dee6 [new file with mode: 0644]

diff --git a/d7/e13294f90577ac4570866574a9029fbf31dee6 b/d7/e13294f90577ac4570866574a9029fbf31dee6
new file mode 100644 (file)
index 0000000..472299f
--- /dev/null
@@ -0,0 +1,163 @@
+Return-Path: <dmitry.kurochkin@gmail.com>\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 197F4431FAF\r
+       for <notmuch@notmuchmail.org>; Sun, 15 Jan 2012 05:57:33 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.799\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.799 tagged_above=-999 required=5\r
+       tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\r
+       FREEMAIL_FROM=0.001, 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 br1vo8l+JQhi for <notmuch@notmuchmail.org>;\r
+       Sun, 15 Jan 2012 05:57:32 -0800 (PST)\r
+Received: from mail-bk0-f53.google.com (mail-bk0-f53.google.com\r
+       [209.85.214.53]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 37849431FAE\r
+       for <notmuch@notmuchmail.org>; Sun, 15 Jan 2012 05:57:32 -0800 (PST)\r
+Received: by bkat2 with SMTP id t2so3967681bka.26\r
+       for <notmuch@notmuchmail.org>; Sun, 15 Jan 2012 05:57:30 -0800 (PST)\r
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;\r
+       h=from:to:cc:subject:in-reply-to:references:user-agent:date\r
+       :message-id:mime-version:content-type;\r
+       bh=wWkHMPl0tsoSgoJOczaFWdn4ltRzEigigMnp7RcQVJg=;\r
+       b=Qnb8cPZ3UTDT22kEFwnQs2RnyNCRwJKcP0TWVXt4jHusGc5tf+9Ue/xqn9jjmuP8IF\r
+       sJOedD9g0bUacztLqPWDn2PgfEI3lPlNmD66Qy2iB0pawEt96xVvvc2Q8e4A4/WQiwPH\r
+       2FX75z5zT2P7QCbwoc8pW/Y/e2FOe+B+WFaCs=\r
+Received: by 10.204.145.86 with SMTP id c22mr3218988bkv.61.1326635850792;\r
+       Sun, 15 Jan 2012 05:57:30 -0800 (PST)\r
+Received: from localhost ([91.144.186.21]) by mx.google.com with ESMTPS id\r
+       ci12sm32339891bkb.13.2012.01.15.05.57.29\r
+       (version=TLSv1/SSLv3 cipher=OTHER);\r
+       Sun, 15 Jan 2012 05:57:30 -0800 (PST)\r
+From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>\r
+To: Pieter Praet <pieter@praet.org>\r
+Subject: Re: [PATCH] test: don't bail out of `run_emacs' too early when\r
+       missing prereqs\r
+In-Reply-To: <87mx9qps82.fsf@praet.org>\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
+User-Agent: Notmuch/0.10.2+135~gb811a3c (http://notmuchmail.org) Emacs/23.3.1\r
+       (x86_64-pc-linux-gnu)\r
+Date: Sun, 15 Jan 2012 17:56:37 +0400\r
+Message-ID: <871ur1nk6i.fsf@gmail.com>\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: Sun, 15 Jan 2012 13:57:33 -0000\r
+\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
+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
+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