~ruther/guix-local

6cf27c89a579fa7db3c6d4b2ad45fbfda1553f6c — Marius Bakke 9 years ago 540d6cc
gnu: notmuch: Enable tests.

* gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/mail.scm (notmuch)[source]: Use patch.
[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.
M gnu/local.mk => gnu/local.mk +1 -0
@@ 722,6 722,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		\

M gnu/packages/mail.scm => gnu/packages/mail.scm +30 -6
@@ 76,7 76,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)


@@ 506,12 508,20 @@ invoking @command{notifymuch} from the post-new hook.")
                                  version ".tar.gz"))
              (sha256
               (base32
                "1f51l34rdhjf8lvafrwybkxdsdwx8k9397m7qxd8rdg2irjmpry5"))))
                "1f51l34rdhjf8lvafrwybkxdsdwx8k9397m7qxd8rdg2irjmpry5"))
              (patches
               ;; Remove this for the next release. See this thread for context:
               ;; https://notmuchmail.org/pipermail/notmuch/2016/023227.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")


@@ 519,14 529,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)

A gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch => gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch +46 -0
@@ 0,0 1,46 @@
This fixes a test failure with emacs-25. Picked from
https://git.notmuchmail.org/git?p=notmuch;a=commit;h=f575a346df09c82691bb9e7c462836d982fe31f7

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