Patchwork [2/4] gnu: notmuch: Enable tests.

login
register
mail settings
Submitter Marius Bakke
Date Oct. 17, 2016, 4:55 p.m.
Message ID <20161017165506.17750-3-mbakke@fastmail.com>
Download mbox | patch
Permalink /patch/16582/
State New
Headers show

Comments

Marius Bakke - Oct. 17, 2016, 4:55 p.m.
* gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/mail.scm (notmuch)[arguments]: Add verbose make flags.
  Add phase 'patch-notmuch-lib.el' to fix hard-coded /bin/sh.
  Add 'prepare-test-environment' phase to patch test shebangs and set
  environment.
[native-inputs]: Change from 'emacs-minimal' to 'emacs-no-x'. Add dtach,
  gnupg, man, perl and which.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/mail.scm                              | 36 +++++++++++++++---
 .../notmuch-emacs-25-compatibility-fix.patch       | 43 ++++++++++++++++++++++
 3 files changed, 74 insertions(+), 6 deletions(-)
 create mode 100644 gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
Leo Famulari - Oct. 17, 2016, 6:29 p.m.
On Mon, Oct 17, 2016 at 05:55:04PM +0100, Marius Bakke wrote:
> * gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Register it.
> * gnu/packages/mail.scm (notmuch)[arguments]: Add verbose make flags.
>   Add phase 'patch-notmuch-lib.el' to fix hard-coded /bin/sh.
>   Add 'prepare-test-environment' phase to patch test shebangs and set
>   environment.
> [native-inputs]: Change from 'emacs-minimal' to 'emacs-no-x'. Add dtach,
>   gnupg, man, perl and which.

A true nit-pick, but all those lines should start at column 0 rather
than being indented.

> +              (patches
> +               ;; This is included in the next release.
> +               ;; https://notmuchmail.org/pipermail/notmuch/2016/023309.html
> +               (search-patches "notmuch-emacs-25-compatibility-fix.patch"))))

Please mention the use of this patch in the commit changelog.

> +       ;; The following are required for tests only.
> +       ("which" ,which)
> +       ("dtach" ,dtach)
> +       ("gnupg" ,gnupg)
> +       ("man" ,man-db)
> +       ("perl" ,perl)))

Can you check if these inputs are referenced by the output? Ideally
not...

$ guix gc --references $(./pre-inst-env guix build notmuch)

> diff --git a/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
> new file mode 100644
> index 0000000..456b345
> --- /dev/null
> +++ b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
> @@ -0,0 +1,43 @@
> +From f575a346df09c82691bb9e7c462836d982fe31f7 Mon Sep 17 00:00:00 2001
> +From: David Bremner <david@tethera.net>
> +Date: Sun, 9 Oct 2016 19:30:44 -0300
> +Subject: [PATCH] emacs/show: force notmuch-show-buttonise-links to act on
> + lines

If possible, please add a hyperlink to the source of the patch. Ideally,
to a Git commit in a web-based Git repo interface.

Not knowing Emacs Lisp, I can't comment on the patch itself.
Marius Bakke - Oct. 17, 2016, 6:56 p.m.
Leo Famulari <leo@famulari.name> writes:

> On Mon, Oct 17, 2016 at 05:55:04PM +0100, Marius Bakke wrote:
>> * gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch: New file.
>> * gnu/local.mk (dist_patch_DATA): Register it.
>> * gnu/packages/mail.scm (notmuch)[arguments]: Add verbose make flags.
>>   Add phase 'patch-notmuch-lib.el' to fix hard-coded /bin/sh.
>>   Add 'prepare-test-environment' phase to patch test shebangs and set
>>   environment.
>> [native-inputs]: Change from 'emacs-minimal' to 'emacs-no-x'. Add dtach,
>>   gnupg, man, perl and which.
>
> A true nit-pick, but all those lines should start at column 0 rather
> than being indented.

Noted.

>
>> +              (patches
>> +               ;; This is included in the next release.
>> +               ;; https://notmuchmail.org/pipermail/notmuch/2016/023309.html
>> +               (search-patches "notmuch-emacs-25-compatibility-fix.patch"))))
>
> Please mention the use of this patch in the commit changelog.

Oops, thanks!

>
>> +       ;; The following are required for tests only.
>> +       ("which" ,which)
>> +       ("dtach" ,dtach)
>> +       ("gnupg" ,gnupg)
>> +       ("man" ,man-db)
>> +       ("perl" ,perl)))
>
> Can you check if these inputs are referenced by the output? Ideally
> not...
>
> $ guix gc --references $(./pre-inst-env guix build notmuch)

Good point, I did not verify this until now. They are not referenced by
the output.

>
>> diff --git a/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
>> new file mode 100644
>> index 0000000..456b345
>> --- /dev/null
>> +++ b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
>> @@ -0,0 +1,43 @@
>> +From f575a346df09c82691bb9e7c462836d982fe31f7 Mon Sep 17 00:00:00 2001
>> +From: David Bremner <david@tethera.net>
>> +Date: Sun, 9 Oct 2016 19:30:44 -0300
>> +Subject: [PATCH] emacs/show: force notmuch-show-buttonise-links to act on
>> + lines
>
> If possible, please add a hyperlink to the source of the patch. Ideally,
> to a Git commit in a web-based Git repo interface.
>
> Not knowing Emacs Lisp, I can't comment on the patch itself.

The bug was exposed by enabling tests against emacs 25 and will be
included in the next release. See this thread:

https://notmuchmail.org/pipermail/notmuch/2016/023227.html

I will add a gitweb link to the patch header.

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9079b42..9d7e14b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -728,6 +728,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/ninja-tests.patch			\
   %D%/packages/patches/ninja-zero-mtime.patch			\
   %D%/packages/patches/node-9077.patch				\
+  %D%/packages/patches/notmuch-emacs-25-compatibility-fix.patch	\
   %D%/packages/patches/nss-pkgconfig.patch			\
   %D%/packages/patches/nvi-assume-preserve-path.patch		\
   %D%/packages/patches/nvi-dbpagesize-binpower.patch		\
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 1cb3ef4..6ab4035 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -72,7 +72,9 @@ 
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gdb)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages samba)
+  #:use-module (gnu packages screen)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages web)
@@ -501,12 +503,20 @@  invoking @command{notifymuch} from the post-new hook.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1f51l34rdhjf8lvafrwybkxdsdwx8k9397m7qxd8rdg2irjmpry5"))))
+                "1f51l34rdhjf8lvafrwybkxdsdwx8k9397m7qxd8rdg2irjmpry5"))
+              (patches
+               ;; This is included in the next release.
+               ;; https://notmuchmail.org/pipermail/notmuch/2016/023309.html
+               (search-patches "notmuch-emacs-25-compatibility-fix.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ; FIXME: 723 tests; 187 fail and 100 are skipped
-                   ; with perl input: 67 fail and 100 are skipped
+     '(#:make-flags (list "V=1") ; Verbose test output.
        #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-notmuch-lib.el
+                    (lambda _
+                      (substitute* "emacs/notmuch-lib.el"
+                        (("/bin/sh") (which "sh")))
+                      #t))
                   (replace 'configure
                     (lambda* (#:key outputs #:allow-other-keys)
                       (setenv "CC" "gcc")
@@ -514,14 +524,28 @@  invoking @command{notifymuch} from the post-new hook.")
 
                       (let ((out (assoc-ref outputs "out")))
                         (zero? (system* "./configure"
-                                        (string-append "--prefix=" out)))))))))
+                                        (string-append "--prefix=" out))))))
+                  (add-before 'check 'prepare-test-environment
+                    (lambda _
+                      (setenv "TEST_CC" "gcc")
+                      ;; Patch various inline shell invocations.
+                      (substitute* (find-files "test" "\\.sh$")
+                        (("/bin/sh") (which "sh")))
+                      #t)))))
     (native-inputs
      `(("bash-completion" ,bash-completion)
-       ("emacs" ,emacs-minimal)
+       ("emacs" ,emacs-no-x) ; Minimal lacks libxml, needed for some tests.
        ("pkg-config" ,pkg-config)
        ("python" ,python-2)
        ("python-docutils" ,python2-docutils)
-       ("python-sphinx" ,python2-sphinx)))
+       ("python-sphinx" ,python2-sphinx)
+
+       ;; The following are required for tests only.
+       ("which" ,which)
+       ("dtach" ,dtach)
+       ("gnupg" ,gnupg)
+       ("man" ,man-db)
+       ("perl" ,perl)))
     (inputs
      `(("glib" ,glib)
        ("gmime" ,gmime)
diff --git a/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
new file mode 100644
index 0000000..456b345
--- /dev/null
+++ b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
@@ -0,0 +1,43 @@ 
+From f575a346df09c82691bb9e7c462836d982fe31f7 Mon Sep 17 00:00:00 2001
+From: David Bremner <david@tethera.net>
+Date: Sun, 9 Oct 2016 19:30:44 -0300
+Subject: [PATCH] emacs/show: force notmuch-show-buttonise-links to act on
+ lines
+
+This seems to fix a problem with emacs 25 creating partial buttons by
+calling n-s-b-l with a region that does not include the whole button.
+I'm not 100% sure it's legit to act outside the region passed by
+jit-lock, but goto-address-fontify-region (where I borrowed the code
+from) already does this, so this patch to not make things worse.
+---
+ emacs/notmuch-show.el | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
+index 641398d..e7d16f8 100644
+--- a/emacs/notmuch-show.el
++++ b/emacs/notmuch-show.el
+@@ -1174,13 +1174,15 @@ This also turns id:\"<message id>\"-parts and mid: links into
+ buttons for a corresponding notmuch search."
+   (goto-address-fontify-region start end)
+   (save-excursion
+-    (let (links)
+-      (goto-char start)
+-      (while (re-search-forward notmuch-id-regexp end t)
++    (let (links
++	  (beg-line (progn (goto-char start) (line-beginning-position)))
++	  (end-line (progn (goto-char end) (line-end-position))))
++      (goto-char beg-line)
++      (while (re-search-forward notmuch-id-regexp end-line t)
+ 	(push (list (match-beginning 0) (match-end 0)
+ 		    (match-string-no-properties 0)) links))
+-      (goto-char start)
+-      (while (re-search-forward notmuch-mid-regexp end t)
++      (goto-char beg-line)
++      (while (re-search-forward notmuch-mid-regexp end-line t)
+ 	(let* ((mid-cid (match-string-no-properties 1))
+ 	       (mid (save-match-data
+ 		      (string-match "^[^/]*" mid-cid)
+-- 
+2.10.1
+