unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH v2] emacs: add compatability functions for emacs 23
@ 2016-10-29 10:21 Mark Walters
  2016-11-02 23:57 ` Matt Armstrong
  2016-11-11 12:11 ` David Bremner
  0 siblings, 2 replies; 8+ messages in thread
From: Mark Walters @ 2016-10-29 10:21 UTC (permalink / raw)
  To: notmuch

Some of the recent changes to the emacs code have used functions
introduced in emacs 24. The functions used are read-char-choice and
setq-local. This changeset adds compatability functions to
notmuch-lib so that it should work on emacs 23.
---

Version 1 of this patch (with some discussion) is at
id:1477191835-17828-1-git-send-email-markwalters1009@gmail.com

The general consensus is that we should not define functions outside
our namespace, even when they are just backports of functions from
later emacs.

rlb on irc gave one additional reason not mentioned earlier in the
thread -- it could be that some other package choses to test for the
setq-local say and perhaps draws incorrect conclusions about the
environment. In particular this would be a case where we were breaking
otherwise working packages.

I think it makes sense to included the whole of read-char-choice, not
some cutdown version, as we may use other functionality from it later
(eg help-forms etc), and it would be confusing if the change only
worked on emacs 24.

Finally, I have two questions

1) please could someone with emacs 23 see if the testsuite passes? My
system with emacs 23 is so outdated the test suite doesn't run (wrong
python versions I think).

2) Is the copyright notice I have included above the two functions
sufficient, and suitably placed?

Best wishes

Mark








 emacs/notmuch-address.el     |  4 +--
 emacs/notmuch-company.el     |  3 +-
 emacs/notmuch-lib.el         | 72 ++++++++++++++++++++++++++++++++++++++++++++
 emacs/notmuch-maildir-fcc.el |  4 +--
 4 files changed, 78 insertions(+), 5 deletions(-)

diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el
index b2e1fba..1af3263 100644
--- a/emacs/notmuch-address.el
+++ b/emacs/notmuch-address.el
@@ -136,11 +136,11 @@ toggles the setting in this buffer."
   (interactive)
   (if (local-variable-p 'notmuch-address-command)
       (kill-local-variable 'notmuch-address-command)
-    (setq-local notmuch-address-command 'internal))
+    (notmuch-setq-local notmuch-address-command 'internal))
   (if (boundp 'company-idle-delay)
       (if (local-variable-p 'company-idle-delay)
 	  (kill-local-variable 'company-idle-delay)
-	(setq-local company-idle-delay nil))))
+	(notmuch-setq-local company-idle-delay nil))))
 
 (defun notmuch-address-matching (substring)
   "Returns a list of completion candidates matching SUBSTRING.
diff --git a/emacs/notmuch-company.el b/emacs/notmuch-company.el
index 168315f..5d75c14 100644
--- a/emacs/notmuch-company.el
+++ b/emacs/notmuch-company.el
@@ -28,6 +28,7 @@
 ;;; Code:
 
 (eval-when-compile (require 'cl))
+(require 'notmuch-lib)
 
 (defvar notmuch-company-last-prefix nil)
 (make-variable-buffer-local 'notmuch-company-last-prefix)
@@ -53,7 +54,7 @@
   ;; internal completion) can still be accessed via standard company
   ;; functions, e.g., company-complete.
   (unless (eq notmuch-address-command 'internal)
-    (setq-local company-idle-delay nil)))
+    (notmuch-setq-local company-idle-delay nil)))
 
 ;;;###autoload
 (defun notmuch-company (command &optional arg &rest _ignore)
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 1f0d167..bb53170 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -966,6 +966,78 @@ status."
 (defvar notmuch-show-process-crypto nil)
 (make-variable-buffer-local 'notmuch-show-process-crypto)
 
+;; Compatibility functions for emacs 23.
+
+;; The functions in this section are copied from eamcs 24.4 and are
+;; Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2014 Free Software
+;; Foundation, Inc.
+
+(if (fboundp 'setq-local)
+    (defalias 'notmuch-setq-local 'setq-local)
+  (defmacro notmuch-setq-local (var val)
+    "Set variable VAR to value VAL in current buffer.
+
+Backport of setq-local for emacs without setq-local (pre 24.3)."
+    `(set (make-local-variable ',var) ,val)))
+
+(if (fboundp 'read-char-choice)
+    (defalias 'notmuch-read-char-choice 'read-char-choice)
+  (defun notmuch-read-char-choice (prompt chars &optional inhibit-keyboard-quit)
+  "Read and return one of CHARS, prompting for PROMPT.
+Any input that is not one of CHARS is ignored.
+
+If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
+keyboard-quit events while waiting for a valid input.
+
+This is an exact copy of this function from emacs 24 for use on
+emacs 23, except with the one emacs 24 only function it calls
+inlined."
+  (unless (consp chars)
+    (error "Called `read-char-choice' without valid char choices"))
+  (let (char done show-help (helpbuf " *Char Help*"))
+    (let ((cursor-in-echo-area t)
+          (executing-kbd-macro executing-kbd-macro)
+	  (esc-flag nil))
+      (save-window-excursion	      ; in case we call help-form-show
+	(while (not done)
+	  (unless (get-text-property 0 'face prompt)
+	    (setq prompt (propertize prompt 'face 'minibuffer-prompt)))
+	  (setq char (let ((inhibit-quit inhibit-keyboard-quit))
+		       (read-key prompt)))
+	  (and show-help (buffer-live-p (get-buffer helpbuf))
+	       (kill-buffer helpbuf))
+	  (cond
+	   ((not (numberp char)))
+	   ;; If caller has set help-form, that's enough.
+	   ;; They don't explicitly have to add help-char to chars.
+	   ((and help-form
+		 (eq char help-char)
+		 (setq show-help t)
+		 ;; This is an inlined copy of help-form-show as that
+		 ;; was introduced in emacs 24 too.
+		 (let ((msg (eval help-form)))
+		   (if (stringp msg)
+		       (with-output-to-temp-buffer " *Char Help*"
+			 (princ msg))))))
+	   ((memq char chars)
+	    (setq done t))
+	   ((and executing-kbd-macro (= char -1))
+	    ;; read-event returns -1 if we are in a kbd macro and
+	    ;; there are no more events in the macro.  Attempt to
+	    ;; get an event interactively.
+	    (setq executing-kbd-macro nil))
+	   ((not inhibit-keyboard-quit)
+	    (cond
+	     ((and (null esc-flag) (eq char ?\e))
+	      (setq esc-flag t))
+	     ((memq char '(?\C-g ?\e))
+	      (keyboard-quit))))))))
+    ;; Display the question with the answer.  But without cursor-in-echo-area.
+    (message "%s%s" prompt (char-to-string char))
+    char)))
+
+;; End of compatability functions
+
 (provide 'notmuch-lib)
 
 ;; Local Variables:
diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el
index 95e5650..7fbcc8c 100644
--- a/emacs/notmuch-maildir-fcc.el
+++ b/emacs/notmuch-maildir-fcc.el
@@ -242,7 +242,7 @@ necessary."
       ;; typo, or just the user want a new folder, let the user decide
       ;; how to deal with it.
       (error
-       (let ((response (read-char-choice
+       (let ((response (notmuch-read-char-choice
 			"Insert failed: (r)etry, (c)reate folder, (i)gnore, or  (e)dit the header? "
 			'(?r ?c ?i ?e))))
 	 (case response
@@ -328,7 +328,7 @@ if needed."
     ;; fix it in some way.
     (let* ((prompt (format "Fcc %s is not a maildir: (r)etry, (c)reate folder, (i)gnore, or  (e)dit the header? "
 			   fcc-header))
-	    (response (read-char-choice prompt '(?r ?c ?i ?e))))
+	    (response (notmuch-read-char-choice prompt '(?r ?c ?i ?e))))
 	 (case response
 	       (?r (notmuch-maildir-fcc-file-fcc fcc-header))
 	       (?c (if (file-writable-p fcc-header)
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-10-29 10:21 [PATCH v2] emacs: add compatability functions for emacs 23 Mark Walters
@ 2016-11-02 23:57 ` Matt Armstrong
  2016-11-11 12:11 ` David Bremner
  1 sibling, 0 replies; 8+ messages in thread
From: Matt Armstrong @ 2016-11-02 23:57 UTC (permalink / raw)
  To: Mark Walters, notmuch

[-- Attachment #1: Type: text/plain, Size: 3491 bytes --]

Mark Walters <markwalters1009@gmail.com> writes:

[...]

> Version 1 of this patch (with some discussion) is at
> id:1477191835-17828-1-git-send-email-markwalters1009@gmail.com
>
> The general consensus is that we should not define functions outside
> our namespace, even when they are just backports of functions from
> later emacs.
>
> rlb on irc gave one additional reason not mentioned earlier in the
> thread -- it could be that some other package choses to test for the
> setq-local say and perhaps draws incorrect conclusions about the
> environment. In particular this would be a case where we were breaking
> otherwise working packages.

Ahh, good point.

Thanks for sticking with the patch.


> I think it makes sense to included the whole of read-char-choice, not
> some cutdown version, as we may use other functionality from it later
> (eg help-forms etc), and it would be confusing if the change only
> worked on emacs 24.
>
> Finally, I have two questions
>
> 1) please could someone with emacs 23 see if the testsuite passes? My
> system with emacs 23 is so outdated the test suite doesn't run (wrong
> python versions I think).

I tried.

FWIW, the patch didn't apply cleanly for me, though I'm not used to
slurping patches around in email.  I used: "git apply -3 mark.patch".
"git apply --reject mark.patch" left a few .rej files that were easily
applied by hand (it looked like some code had moved too far?).

I'm stuck on an Ubuntu trusty release, which is rather old and has a
packaged emacs 23.  I'm not sure how useful my results are, though,
because I show a lot of test errors regardless.  This may be a result of
me compiling my own xapian, which the notmuch build system does not
handle particularly gracefully.  Most failures are of the form "A Xapian
exception occurred performing query", and unrelated to your patch.

Before your patch I got the expected byte compiler warnings:

% XAPIAN_CONFIG=$HOME/opt/xapian-core-1.4.0/bin/xapian-config ./configure
% LD_RUN_PATH=$HOME/opt/xapian-core-1.4.0/lib make test

[...]

notmuch-company.el:95:1:Warning: the function `setq-local' is not known to be
    defined.
notmuch-address.el:351:1:Warning: the function `setq-local' is not known to be
    defined.
notmuch-maildir-fcc.el:376:1:Warning: the function `read-char-choice' is not
    known to be defined.

[...then I see...]

Notmuch test suite complete.
635/783 tests passed.
2 broken tests failed as expected.
43 tests failed.
103 tests skipped.

[...with this patch the byte compiler shuts up, but I get the same test
suite errors...]

Notmuch test suite complete.
635/783 tests passed.
2 broken tests failed as expected.
43 tests failed.
103 tests skipped.

[...but not to worry, I get the same running Emacs 25 too...]

I'll attach full output of the notmuch test run.


> 2) Is the copyright notice I have included above the two functions
> sufficient, and suitably placed?

An alternative is to place these functions in a new file named something
like notmuch-backport.el, with clear FSF copyright.  Since what
constitutes "functions in this section" may drift over time, the rigor
of a separate file might be desirable.


> --- a/emacs/notmuch-lib.el
> +++ b/emacs/notmuch-lib.el
> @@ -966,6 +966,78 @@ status."
>  (defvar notmuch-show-process-crypto nil)
>  (make-variable-buffer-local 'notmuch-show-process-crypto)
>  
> +;; Compatibility functions for emacs 23.
> +
> +;; The functions in this section are copied from eamcs 24.4 and are

typo: eamcs



[-- Attachment #2: Errors from notmuch test --]
[-- Type: text/plain, Size: 39355 bytes --]

Use "make V=1" to print test headings and PASSing results.
INFO: using 2 minute timeout for tests

T050-new: Testing "notmuch new" in several variations
 FAIL   Xapian exception: read only files
	--- T050-new.30.expected	2016-11-02 23:49:06.740165419 +0000
	+++ T050-new.30.output	2016-11-02 23:49:06.740165419 +0000
	@@ -1 +1,17 @@
	-A Xapian exception occurred opening database
	+(D) add_files, pass 1
	+(D) add_files, pass 1
	+(D) add_files, pass 1
	+(D) add_files, pass 1
	+(D) add_files, pass 1
	+(D) add_files, pass 1
	+(D) add_files, pass 2
	+(D) add_files, pass 2
	+(D) add_files, pass 1
	+(D) add_files, pass 2
	+(D) add_files, pass 1
	+(D) add_files, pass 2
	+(D) add_files, pass 2
	+(D) add_files, pass 2
	+(D) add_files, pass 2
	+(D) add_files, pass 2
	+No new mail.
chmod: cannot access '/usr/local/google/home/marmstrong/git/notmuch/test/tmp.T050-new/mail/.notmuch/xapian/*.DB': No such file or directory
chmod: cannot access '/usr/local/google/home/marmstrong/git/notmuch/test/tmp.T050-new/mail/.notmuch/xapian/*.DB': No such file or directory

T060-count: Testing "notmuch count" for messages and threads
 FAIL   error message for database open
	--- T060-count.13.expected	2016-11-02 23:49:06.984168633 +0000
	+++ T060-count.13.output	2016-11-02 23:49:06.984168633 +0000
	@@ -1 +1 @@
	-A Xapian exception occurred opening database
	+
3+0 records in
3+0 records out
1536 bytes (1.5 kB) copied, 5.4575e-05 s, 28.1 MB/s
 FAIL   error message from query_search_messages
	--- T060-count.14.EXPECTED	2016-11-02 23:49:07.580176482 +0000
	+++ T060-count.14.OUTPUT.clean	2016-11-02 23:49:07.580176482 +0000
	@@ -1,3 +0,0 @@
	-notmuch count: A Xapian exception occurred
	-A Xapian exception occurred performing query
	-Query string was: *
 BROKEN count library function is non-destructive
	--- T060-count.15.EXPECTED	2016-11-02 23:49:07.632177167 +0000
	+++ T060-count.15.OUTPUT	2016-11-02 23:49:07.632177167 +0000
	@@ -2,4 +2,4 @@
	 2: 52 messages
	 Exclude 'spam'
	 3: 52 messages
	-4: 52 messages
	+4: 0 messages

T150-tagging: Testing "notmuch tag"
 FAIL   Xapian exception: read only files
	--- T150-tagging.24.expected	2016-11-02 23:49:29.548465813 +0000
	+++ T150-tagging.24.output	2016-11-02 23:49:29.548465813 +0000
	@@ -1 +1 @@
	-A Xapian exception occurred opening database
	+
chmod: cannot access '/usr/local/google/home/marmstrong/git/notmuch/test/tmp.T150-tagging/mail/.notmuch/xapian/*.DB': No such file or directory
chmod: cannot access '/usr/local/google/home/marmstrong/git/notmuch/test/tmp.T150-tagging/mail/.notmuch/xapian/*.DB': No such file or directory
 missing prerequisites: dtach(1)
 SKIP   Show message: json, inline attachment filename
 missing prerequisites: dtach(1)
 SKIP   Show message: sexp, inline attachment filename

T170-sexp: Testing --format=sexp output
 FAIL   Search message: sexp, utf-8
	--- T170-sexp.7.expected	2016-11-02 23:49:31.208487677 +0000
	+++ T170-sexp.7.output	2016-11-02 23:49:31.208487677 +0000
	@@ -1 +1 @@
	-((:thread "0000000000000005" :timestamp 946728000 :date_relative "2000-01-01" :matched 1 :total 1 :authors "Notmuch Test Suite" :subject "sexp-search-utf8-body-sübjéct" :query ("id:msg-004@notmuch-test-suite" nil) :tags ("inbox" "unread")))
	+((:thread "0000000000000004" :timestamp 946728000 :date_relative "2000-01-01" :matched 1 :total 1 :authors "Notmuch Test Suite" :subject "sexp-search-utf8-body-sübjéct" :query ("id:msg-004@notmuch-test-suite" nil) :tags ("inbox" "unread")))
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-hello view in emacs
 missing prerequisites: dtach(1)
 SKIP   Saved search with 0 results
 missing prerequisites: dtach(1)
 SKIP   No saved searches displayed (all with 0 results)
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-search view in emacs
 missing prerequisites: dtach(1)
 SKIP   Incremental parsing of search results
 missing prerequisites: dtach(1)
 SKIP   Navigation of notmuch-hello to search results
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-show view in emacs
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-show view in emacs default indentation
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-show view in emacs without indentation
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-show view in emacs with fourfold indentation
 missing prerequisites: dtach(1)
 SKIP   notmuch-show for message with invalid From
 missing prerequisites: dtach(1)
 SKIP   Navigation of notmuch-search to thread view
 missing prerequisites: dtach(1)
 SKIP   Add tag from search view
 missing prerequisites: dtach(1)
 SKIP   Remove tag from search view
 missing prerequisites: dtach(1)
 SKIP   Add tag (large query)
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: add single tag to single message
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: remove single tag from single message
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: add multiple tags to single message
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: remove multiple tags from single message
 missing prerequisites: dtach(1)
 SKIP   Message with .. in Message-Id:
 missing prerequisites: dtach(1)
 SKIP   Message with quote in Message-Id:
 missing prerequisites: dtach(1)
 SKIP   Sending a message via (fake) SMTP

T310-emacs: Testing emacs interface
 FAIL   Verify that sent messages are saved/searchable (via FCC)
	--- T310-emacs.24.expected	2016-11-02 23:49:50.588742919 +0000
	+++ T310-emacs.24.output	2016-11-02 23:49:50.588742919 +0000
	@@ -1 +1 @@
	-thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; Testing message sent via SMTP (inbox)
	+
 missing prerequisites: dtach(1)
 SKIP   notmuch-fcc-dirs set to nil
 missing prerequisites: dtach(1)
 SKIP   notmuch-fcc-dirs set to a string
 missing prerequisites: dtach(1)
 SKIP   notmuch-fcc-dirs set to a list (with match)
 missing prerequisites: dtach(1)
 SKIP   notmuch-fcc-dirs set to a list (catch-all)
 missing prerequisites: dtach(1)
 SKIP   notmuch-fcc-dirs set to a list (no match)
 missing prerequisites: dtach(1)
 SKIP   Reply within emacs
 missing prerequisites: dtach(1)
 SKIP   Reply from alternate address within emacs
 missing prerequisites: dtach(1)
 SKIP   Reply from address in named group list within emacs
 missing prerequisites: dtach(1)
 SKIP   Reply within emacs to a multipart/mixed message
 missing prerequisites: dtach(1)
 SKIP   Reply within emacs to a multipart/alternative message
 missing prerequisites: dtach(1)
 SKIP   Reply within emacs to an html-only message
 missing prerequisites: dtach(1)
 SKIP   Reply within emacs to message from self
 missing prerequisites: dtach(1)
 SKIP   Quote MML tags in reply
 missing prerequisites: dtach(1)
 SKIP   Save attachment from within emacs using notmuch-show-save-attachments
 missing prerequisites: dtach(1)
 SKIP   Save attachment from within emacs using notmuch-show-save-part
 missing prerequisites: dtach(1)
 SKIP   Save 8bit attachment from within emacs using notmuch-show-save-attachments
 missing prerequisites: dtach(1)
 SKIP   View raw message within emacs
 missing prerequisites: dtach(1)
 SKIP   Hiding/showing signature in notmuch-show view
 missing prerequisites: dtach(1)
 SKIP   Detection and hiding of top-post quoting of message
 missing prerequisites: dtach(1)
 SKIP   Hiding message in notmuch-show view
 missing prerequisites: dtach(1)
 SKIP   Hiding message with visible citation in notmuch-show view
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: show message headers
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: hide message headers
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: hide message headers (w/ notmuch-show-toggle-visibility-headers)
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: collapse all messages in thread
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: uncollapse all messages in thread
 missing prerequisites: dtach(1)
 SKIP   Stashing in notmuch-show
 missing prerequisites: dtach(1)
 SKIP   Stashing in notmuch-search
 missing prerequisites: dtach(1)
 SKIP   notmuch-show-advance-and-archive with invisible signature
 missing prerequisites: dtach(1)
 SKIP   Refresh show buffer
 missing prerequisites: dtach(1)
 SKIP   Refresh modified show buffer
 missing prerequisites: dtach(1)
 SKIP   Do not call notmuch for non-inlinable application/mpeg parts
 missing prerequisites: dtach(1)
 SKIP   Do not call notmuch for non-inlinable audio/mpeg parts
 FAIL   notmuch-hello-mode hook is called
	--- T310-emacs.58.expected	2016-11-02 23:49:51.876759883 +0000
	+++ T310-emacs.58.output	2016-11-02 23:49:51.876759883 +0000
	@@ -1 +1 @@
	-1
	+
 FAIL   notmuch-hello-mode hook is not called on updates
	--- T310-emacs.59.expected	2016-11-02 23:49:51.884759987 +0000
	+++ T310-emacs.59.output	2016-11-02 23:49:51.884759987 +0000
	@@ -1 +1 @@
	-1
	+
 FAIL   notmuch-hello-refresh hook is called
	--- T310-emacs.60.expected	2016-11-02 23:49:51.888760040 +0000
	+++ T310-emacs.60.output	2016-11-02 23:49:51.888760040 +0000
	@@ -1 +1 @@
	-1
	+
 FAIL   notmuch-hello-refresh hook is called on updates
	--- T310-emacs.61.expected	2016-11-02 23:49:51.896760146 +0000
	+++ T310-emacs.61.output	2016-11-02 23:49:51.896760146 +0000
	@@ -1 +1 @@
	-2
	+
 FAIL   Rendering HTML mail with images
	cat OUTPUT && grep -q smiley OUTPUT
 missing prerequisites: dtach(1)
 SKIP   Search handles subprocess error exit codes
 missing prerequisites: dtach(1)
 SKIP   Search handles subprocess warnings
 missing prerequisites: dtach(1)
 SKIP   Search thread tag operations are race-free
 missing prerequisites: dtach(1)
 SKIP   Search global tag operations are race-free
 FAIL   Term escaping
	--- T310-emacs.67.expected	2016-11-02 23:49:52.112762990 +0000
	+++ T310-emacs.67.output	2016-11-02 23:49:52.112762990 +0000
	@@ -1 +1 @@
	-("\"\"" "abc`~!@#$%^&*-=_+123" "\"(abc\"" "\")abc\"" "\"\"\"abc\"" "\"\x01xyz\"" "\"“xyz”\"")
	+
 missing prerequisites: dtach(1)
 SKIP   Ensure that emacs doesn't drop results
 missing prerequisites: dtach(1)
 SKIP   all tests in T330-emacs-subject-to-filename
 missing prerequisites: dtach(1)
 SKIP   emacs delivery of signed message

T350-crypto: Testing PGP/MIME signature verification and decryption
 FAIL   signature verification
	--- T350-crypto.2.expected	2016-11-02 23:49:56.212816988 +0000
	+++ T350-crypto.2.output	2016-11-02 23:49:56.212816988 +0000
	@@ -1,50 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content": "This is a test signed message.\n",
	-                                "content-type": "text/plain",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content-length": 280,
	-                                "content-type": "application/pgp-signature",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/signed",
	-                        "id": 1,
	-                        "sigstatus": [
	-                            {
	-                                "created": 946728000,
	-                                "fingerprint": "5AEAB11F5E33DCE875DDB75B6D92612D94E46381",
	-                                "status": "good"
	-                            }
	-                        ]
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test signed message 001",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "inbox",
	-                    "signed"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 FAIL   signature verification with full owner trust
	--- T350-crypto.3.expected	2016-11-02 23:49:56.264817674 +0000
	+++ T350-crypto.3.output	2016-11-02 23:49:56.264817674 +0000
	@@ -1,51 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content": "This is a test signed message.\n",
	-                                "content-type": "text/plain",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content-length": 280,
	-                                "content-type": "application/pgp-signature",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/signed",
	-                        "id": 1,
	-                        "sigstatus": [
	-                            {
	-                                "created": 946728000,
	-                                "fingerprint": "5AEAB11F5E33DCE875DDB75B6D92612D94E46381",
	-                                "status": "good",
	-                                "userid": " Notmuch Test Suite <test_suite@notmuchmail.org> (INSECURE!)"
	-                            }
	-                        ]
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test signed message 001",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "inbox",
	-                    "signed"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 FAIL   signature verification with signer key unavailable
	--- T350-crypto.4.expected	2016-11-02 23:49:56.312818305 +0000
	+++ T350-crypto.4.output	2016-11-02 23:49:56.312818305 +0000
	@@ -1,50 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content": "This is a test signed message.\n",
	-                                "content-type": "text/plain",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content-length": 280,
	-                                "content-type": "application/pgp-signature",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/signed",
	-                        "id": 1,
	-                        "sigstatus": [
	-                            {
	-                                "errors": 2,
	-                                "keyid": "6D92612D94E46381",
	-                                "status": "error"
	-                            }
	-                        ]
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test signed message 001",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "inbox",
	-                    "signed"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 missing prerequisites: dtach(1)
 SKIP   emacs delivery of encrypted message with attachment
 FAIL   decryption, --format=text
	--- T350-crypto.6.expected	2016-11-02 23:49:56.336818622 +0000
	+++ T350-crypto.6.output	2016-11-02 23:49:56.336818622 +0000
	@@ -1,24 +1 @@
	-\fmessage{ id:XXXXX depth:0 match:1 excluded:0 filename:XXXXX
	-\fheader{
	-Notmuch Test Suite <test_suite@notmuchmail.org> (2000-01-01) (encrypted inbox)
	-Subject: test encrypted message 001
	-From: Notmuch Test Suite <test_suite@notmuchmail.org>
	-To: test_suite@notmuchmail.org
	-Date: Sat, 01 Jan 2000 12:00:00 +0000
	-\fheader}
	-\fbody{
	-\fpart{ ID: 1, Content-type: multipart/encrypted
	-\fpart{ ID: 2, Content-type: application/pgp-encrypted
	-Non-text part: application/pgp-encrypted
	-\fpart}
	-\fpart{ ID: 3, Content-type: multipart/mixed
	-\fpart{ ID: 4, Content-type: text/plain
	-This is a test encrypted message.
	-\fpart}
	-\fattachment{ ID: 5, Filename: TESTATTACHMENT, Content-type: application/octet-stream
	-Non-text part: application/octet-stream
	-\fattachment}
	-\fpart}
	-\fpart}
	-\fbody}
	-\fmessage}
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
 FAIL   decryption, --format=json
	--- T350-crypto.7.expected	2016-11-02 23:49:56.384819254 +0000
	+++ T350-crypto.7.output	2016-11-02 23:49:56.384819254 +0000
	@@ -1,62 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content-length": 11,
	-                                "content-type": "application/pgp-encrypted",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content": [
	-                                    {
	-                                        "content": "This is a test encrypted message.\n",
	-                                        "content-type": "text/plain",
	-                                        "id": 4
	-                                    },
	-                                    {
	-                                        "content-length": 28,
	-                                        "content-transfer-encoding": "base64",
	-                                        "content-type": "application/octet-stream",
	-                                        "filename": "TESTATTACHMENT",
	-                                        "id": 5
	-                                    }
	-                                ],
	-                                "content-type": "multipart/mixed",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/encrypted",
	-                        "encstatus": [
	-                            {
	-                                "status": "good"
	-                            }
	-                        ],
	-                        "id": 1,
	-                        "sigstatus": []
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test encrypted message 001",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "encrypted",
	-                    "inbox"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 FAIL   decryption, --format=json, --part=4
	--- T350-crypto.8.expected	2016-11-02 23:49:56.432819886 +0000
	+++ T350-crypto.8.output	2016-11-02 23:49:56.432819886 +0000
	@@ -1,5 +1 @@
	-{
	-    "content": "This is a test encrypted message.\n",
	-    "content-type": "text/plain",
	-    "id": 4
	-}
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 FAIL   decrypt attachment (--part=5 --format=raw)
	--- T350-crypto.9.OUTPUT	2016-11-02 23:49:56.452820149 +0000
	+++ T350-crypto.9.TESTATTACHMENT	2016-11-02 23:49:56.452820149 +0000
	@@ -0,0 +1 @@
	+This is a test file.
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
 FAIL   decryption failure with missing key
	--- T350-crypto.10.expected	2016-11-02 23:49:56.504820835 +0000
	+++ T350-crypto.10.output	2016-11-02 23:49:56.504820835 +0000
	@@ -1,48 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content-length": 11,
	-                                "content-type": "application/pgp-encrypted",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content-length": 652,
	-                                "content-type": "application/octet-stream",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/encrypted",
	-                        "encstatus": [
	-                            {
	-                                "status": "bad"
	-                            }
	-                        ],
	-                        "id": 1
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test encrypted message 001",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "encrypted",
	-                    "inbox"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 missing prerequisites: dtach(1)
 SKIP   emacs delivery of encrypted + signed message
 FAIL   decryption + signature verification
	--- T350-crypto.12.expected	2016-11-02 23:49:56.564821625 +0000
	+++ T350-crypto.12.output	2016-11-02 23:49:56.568821677 +0000
	@@ -1,56 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content-length": 11,
	-                                "content-type": "application/pgp-encrypted",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content": "This is another test encrypted message.\n",
	-                                "content-type": "text/plain",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/encrypted",
	-                        "encstatus": [
	-                            {
	-                                "status": "good"
	-                            }
	-                        ],
	-                        "id": 1,
	-                        "sigstatus": [
	-                            {
	-                                "created": 946728000,
	-                                "fingerprint": "5AEAB11F5E33DCE875DDB75B6D92612D94E46381",
	-                                "status": "good",
	-                                "userid": " Notmuch Test Suite <test_suite@notmuchmail.org> (INSECURE!)"
	-                            }
	-                        ]
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test encrypted message 002",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "encrypted",
	-                    "inbox"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 FAIL   reply to encrypted message
	--- T350-crypto.13.expected	2016-11-02 23:49:56.580821835 +0000
	+++ T350-crypto.13.output	2016-11-02 23:49:56.580821835 +0000
	@@ -1,5 +1 @@
	-From: Notmuch Test Suite <test_suite@notmuchmail.org>
	-Subject: Re: test encrypted message 002
	 
	-On 01 Jan 2000 12:00:00 -0000, Notmuch Test Suite <test_suite@notmuchmail.org> wrote:
	-> This is another test encrypted message.
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
 missing prerequisites: dtach(1)
 SKIP   Reply within emacs to an encrypted message
 FAIL   signature verification with revoked key
	--- T350-crypto.15.expected	2016-11-02 23:49:56.640822625 +0000
	+++ T350-crypto.15.output	2016-11-02 23:49:56.640822625 +0000
	@@ -1,50 +1 @@
	-[
	-    [
	-        [
	-            {
	-                "body": [
	-                    {
	-                        "content": [
	-                            {
	-                                "content": "This is a test signed message.\n",
	-                                "content-type": "text/plain",
	-                                "id": 2
	-                            },
	-                            {
	-                                "content-length": 280,
	-                                "content-type": "application/pgp-signature",
	-                                "id": 3
	-                            }
	-                        ],
	-                        "content-type": "multipart/signed",
	-                        "id": 1,
	-                        "sigstatus": [
	-                            {
	-                                "errors": 8,
	-                                "keyid": "6D92612D94E46381",
	-                                "status": "error"
	-                            }
	-                        ]
	-                    }
	-                ],
	-                "date_relative": "2000-01-01",
	-                "excluded": false,
	-                "filename": "YYYYY",
	-                "headers": {
	-                    "Date": "Sat, 01 Jan 2000 12:00:00 +0000",
	-                    "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
	-                    "Subject": "test signed message 001",
	-                    "To": "test_suite@notmuchmail.org"
	-                },
	-                "id": "XXXXX",
	-                "match": true,
	-                "tags": [
	-                    "inbox",
	-                    "signed"
	-                ],
	-                "timestamp": 946728000
	-            },
	-            []
	-        ]
	-    ]
	-]
	+
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
Error opening database at /usr/local/google/home/marmstrong/git/notmuch/test/tmp.T350-crypto/mail/.notmuch: No such file or directory
No JSON object could be decoded
 missing prerequisites: gpgsm(1)
 SKIP   all tests in T355-smime

T360-symbol-hiding: Testing exception symbol hiding
 FAIL   running test
	--- T360-symbol-hiding.1.EXPECTED	2016-11-02 23:49:56.748824048 +0000
	+++ T360-symbol-hiding.1.OUTPUT	2016-11-02 23:49:56.748824048 +0000
	@@ -1,2 +1,2 @@
	 A Xapian exception occurred opening database: Couldn't stat 'CWD/fakedb/.notmuch/xapian'
	-caught No backend database found at path 'CWD/nonexistent'
	+caught No glass database found at path 'CWD/nonexistent'
 missing prerequisites: ruby development files
 SKIP   all tests in T395-ruby

T420-emacs-test-functions: Testing emacs test function sanity
 FAIL   emacs test function sanity
	

T430-emacs-address-cleaning: Testing emacs address cleaning
 FAIL   notmuch-test-address-clean part 1
	
 FAIL   notmuch-test-address-clean part 2
	
 FAIL   notmuch-test-address-clean part 3
	
 missing prerequisites: dtach(1)
 SKIP   User-defined section with inbox tag
 missing prerequisites: dtach(1)
 SKIP   User-defined section with empty, hidden entry
 missing prerequisites: dtach(1)
 SKIP   User-defined section, unread tag filtered out
 missing prerequisites: dtach(1)
 SKIP   User-defined section, different query for counts
 missing prerequisites: dtach(1)
 SKIP   Empty custom tags section
 missing prerequisites: dtach(1)
 SKIP   Empty custom queries section
 missing prerequisites: dtach(1)
 SKIP   Column alignment for tag/queries with long names
 missing prerequisites: dtach(1)
 SKIP   Hiding Original Message region at beginning of a message

T450-emacs-show: Testing emacs notmuch-show view
 FAIL   Bare subject #1
	--- T450-emacs-show.2.expected	2016-11-02 23:50:07.616967182 +0000
	+++ T450-emacs-show.2.output	2016-11-02 23:50:07.616967182 +0000
	@@ -1 +1 @@
	-"subject"
	+
 FAIL   Bare subject #2
	--- T450-emacs-show.3.expected	2016-11-02 23:50:07.624967286 +0000
	+++ T450-emacs-show.3.output	2016-11-02 23:50:07.624967286 +0000
	@@ -1 +1 @@
	-"subject"
	+
 FAIL   Bare subject #3
	--- T450-emacs-show.4.expected	2016-11-02 23:50:07.628967339 +0000
	+++ T450-emacs-show.4.output	2016-11-02 23:50:07.628967339 +0000
	@@ -1 +1 @@
	-"the cure: fix the regexp"
	+
 missing prerequisites: dtach(1)
 SKIP   don't process cryptographic MIME parts
 missing prerequisites: dtach(1)
 SKIP   process cryptographic MIME parts
 missing prerequisites: dtach(1)
 SKIP   process cryptographic MIME parts (w/ notmuch-show-toggle-process-crypto)
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: don't elide non-matching messages
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: elide non-matching messages
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: elide non-matching messages (w/ notmuch-show-toggle-elide-non-matching)
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: elide non-matching messages (w/ prefix arg to notmuch-show)
 missing prerequisites: dtach(1)
 SKIP   notmuch-show: disable indentation of thread content (w/ notmuch-show-toggle-thread-indentation)
 missing prerequisites: dtach(1)
 SKIP   id buttonization
 missing prerequisites: dtach(1)
 SKIP   Show handles subprocess errors
 missing prerequisites: dtach(1)
 SKIP   Text parts are decoded when rendering
 missing prerequisites: dtach(1)
 SKIP   8bit text parts are decoded when rendering
 missing prerequisites: dtach(1)
 SKIP   HTML parts are decoded when rendering
 missing prerequisites: dtach(1)
 SKIP   Text parts are not decoded when saving
 missing prerequisites: dtach(1)
 SKIP   8bit text parts are not decoded when saving
 missing prerequisites: dtach(1)
 SKIP   HTML parts are not decoded when saving
 missing prerequisites: dtach(1)
 SKIP   Binary parts are not decoded when saving
 missing prerequisites: dtach(1)
 SKIP   Text message are not decoded when viewing
 missing prerequisites: dtach(1)
 SKIP   8bit text message are not decoded when viewing
 missing prerequisites: dtach(1)
 SKIP   Basic notmuch-tree view in emacs
 missing prerequisites: dtach(1)
 SKIP   Refreshed notmuch-tree view in emacs
 missing prerequisites: dtach(1)
 SKIP   Tag message in notmuch tree view (display)

T460-emacs-tree: Testing emacs tree view interface
 FAIL   Tag message in notmuch tree view (database)
	--- T460-emacs-tree.4.expected	2016-11-02 23:50:08.180974609 +0000
	+++ T460-emacs-tree.4.output	2016-11-02 23:50:08.180974609 +0000
	@@ -1 +1 @@
	-id:877h1wv7mg.fsf@inf-8657.int-evry.fr
	+
 missing prerequisites: dtach(1)
 SKIP   Untag message in notmuch tree view
 missing prerequisites: dtach(1)
 SKIP   Tag thread in notmuch tree view
 FAIL   Tag message in notmuch tree view (database)
	--- T460-emacs-tree.8.expected	2016-11-02 23:50:08.192974768 +0000
	+++ T460-emacs-tree.8.output	2016-11-02 23:50:08.192974768 +0000
	@@ -1,7 +1 @@
	-id:87ocn0qh6d.fsf@yoom.home.cworth.org
	-id:20091118005040.GA25380@dottiness.seas.harvard.edu
	-id:yunaayketfm.fsf@aiko.keithp.com
	-id:87fx8can9z.fsf@vertex.dottedmag
	-id:20091117203301.GV3165@dottiness.seas.harvard.edu
	-id:87iqd9rn3l.fsf@vertex.dottedmag
	-id:20091117190054.GU3165@dottiness.seas.harvard.edu
	+
 missing prerequisites: dtach(1)
 SKIP   Untag thread in notmuch tree view
 missing prerequisites: dtach(1)
 SKIP   Navigation of notmuch-hello to search results
 missing prerequisites: dtach(1)
 SKIP   Tree view of a single thread (from search)
 missing prerequisites: dtach(1)
 SKIP   Tree view of a single thread (from show)
 missing prerequisites: dtach(1)
 SKIP   Message window of tree view
 FAIL   Stash id
	--- T460-emacs-tree.15.expected	2016-11-02 23:50:08.220975136 +0000
	+++ T460-emacs-tree.15.output	2016-11-02 23:50:08.220975136 +0000
	@@ -1 +1 @@
	-"Stashed: id:1258498485-sup-142@elly"
	+
 FAIL   Move to next matching message
	--- T460-emacs-tree.16.expected	2016-11-02 23:50:08.224975190 +0000
	+++ T460-emacs-tree.16.output	2016-11-02 23:50:08.224975190 +0000
	@@ -1 +1 @@
	-"Stashed: id:878we4qdqf.fsf@yoom.home.cworth.org"
	+
 FAIL   Move to next thread
	--- T460-emacs-tree.17.expected	2016-11-02 23:50:08.232975295 +0000
	+++ T460-emacs-tree.17.output	2016-11-02 23:50:08.232975295 +0000
	@@ -1 +1 @@
	-"Stashed: id:1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"
	+
 FAIL   Move to previous thread
	--- T460-emacs-tree.18.expected	2016-11-02 23:50:08.244975452 +0000
	+++ T460-emacs-tree.18.output	2016-11-02 23:50:08.244975452 +0000
	@@ -1 +1 @@
	-"Stashed: id:20091117190054.GU3165@dottiness.seas.harvard.edu"
	+
 FAIL   Move to previous previous thread
	--- T460-emacs-tree.19.expected	2016-11-02 23:50:08.252975559 +0000
	+++ T460-emacs-tree.19.output	2016-11-02 23:50:08.252975559 +0000
	@@ -1 +1 @@
	-"Stashed: id:1258493565-13508-1-git-send-email-keithp@keithp.com"
	+
 missing prerequisites: database-v1.tar.xz - fetch with 'make download-test-databases'
 SKIP   all tests in T530-upgrade

T560-lib-error: Testing error reporting for library
 FAIL   Xapian exception finding message
	--- T560-lib-error.11.EXPECTED	2016-11-02 23:50:11.921023864 +0000
	+++ T560-lib-error.11.OUTPUT.clean	2016-11-02 23:50:11.925023919 +0000
	@@ -1,3 +1,3 @@
	 == stdout ==
	 == stderr ==
	-A Xapian exception occurred finding message
	+error opening MAIL_DIR
 FAIL   Xapian exception getting tags
	--- T560-lib-error.12.EXPECTED	2016-11-02 23:50:12.065025764 +0000
	+++ T560-lib-error.12.OUTPUT.clean	2016-11-02 23:50:12.069025815 +0000
	@@ -1,3 +1,3 @@
	 == stdout ==
	 == stderr ==
	-A Xapian exception occurred getting tags
	+error opening MAIL_DIR
 FAIL   Xapian exception creating directory
	--- T560-lib-error.13.EXPECTED	2016-11-02 23:50:12.177027236 +0000
	+++ T560-lib-error.13.OUTPUT.clean	2016-11-02 23:50:12.181027288 +0000
	@@ -1,3 +1,3 @@
	 == stdout ==
	 == stderr ==
	-A Xapian exception occurred creating a directory
	+error opening MAIL_DIR
 FAIL   Xapian exception searching messages
	--- T560-lib-error.14.EXPECTED	2016-11-02 23:50:12.281028608 +0000
	+++ T560-lib-error.14.OUTPUT.clean	2016-11-02 23:50:12.281028608 +0000
	@@ -1,4 +1,3 @@
	 == stdout ==
	 == stderr ==
	-A Xapian exception occurred performing query
	-Query string was: *
	+error opening MAIL_DIR
 FAIL   Xapian exception counting messages
	--- T560-lib-error.15.EXPECTED	2016-11-02 23:50:12.437030662 +0000
	+++ T560-lib-error.15.OUTPUT.clean	2016-11-02 23:50:12.441030715 +0000
	@@ -1,4 +1,3 @@
	 == stdout ==
	 == stderr ==
	-A Xapian exception occurred performing query
	-Query string was: id:87ocn0qh6d.fsf@yoom.home.cworth.org
	+error opening MAIL_DIR
test14.c: In function 'main':
test14.c:29:8: warning: 'notmuch_query_count_messages' is deprecated (declared at /usr/local/google/home/marmstrong/git/notmuch/test/../lib/notmuch.h:1028): function deprecated as of libnotmuch 4.3 [-Wdeprecated-declarations]
        int count = notmuch_query_count_messages (query);
        ^
 BROKEN No ghosts should remain after deletion of second message
	--- T590-thread-breakage.22.expected	2016-11-02 23:50:16.189080078 +0000
	+++ T590-thread-breakage.22.output	2016-11-02 23:50:16.189080078 +0000
	@@ -1 +1 @@
	-0
	+1

Notmuch test suite complete.
635/783 tests passed.
2 broken tests failed as expected.
43 tests failed.
103 tests skipped.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-10-29 10:21 [PATCH v2] emacs: add compatability functions for emacs 23 Mark Walters
  2016-11-02 23:57 ` Matt Armstrong
@ 2016-11-11 12:11 ` David Bremner
  2016-11-11 13:16   ` David Bremner
  1 sibling, 1 reply; 8+ messages in thread
From: David Bremner @ 2016-11-11 12:11 UTC (permalink / raw)
  To: Mark Walters, notmuch

Mark Walters <markwalters1009@gmail.com> writes:

> Some of the recent changes to the emacs code have used functions
> introduced in emacs 24. The functions used are read-char-choice and
> setq-local. This changeset adds compatability functions to
> notmuch-lib so that it should work on emacs 23.
> ---

> 1) please could someone with emacs 23 see if the testsuite passes? My
> system with emacs 23 is so outdated the test suite doesn't run (wrong
> python versions I think).

I get many failures like

emacsclient.emacs23: connect: Connection refused
emacsclient.emacs23: error accessing socket "/tmp/emacs1000/notmuch-test-suite-21492"

At a guess, somehow the server is shutting down/dying. I did manage to
manually run an emacs server on this machine, and the socket is being
created in the file system.

> 2) Is the copyright notice I have included above the two functions
> sufficient, and suitably placed?

I think it would be best to modify the copyright at the top of the
file. So to avoid confusing (if for some unforseen reason we wanted to
relicense this file), it might be best to go with a seperate file. But
lets see if someone can figure out the issue with the test suite before
putting much more effort into it.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-11-11 12:11 ` David Bremner
@ 2016-11-11 13:16   ` David Bremner
  2016-11-11 13:38     ` David Bremner
  0 siblings, 1 reply; 8+ messages in thread
From: David Bremner @ 2016-11-11 13:16 UTC (permalink / raw)
  To: Mark Walters, notmuch

David Bremner <david@tethera.net> writes:

> Mark Walters <markwalters1009@gmail.com> writes:
>
>> Some of the recent changes to the emacs code have used functions
>> introduced in emacs 24. The functions used are read-char-choice and
>> setq-local. This changeset adds compatability functions to
>> notmuch-lib so that it should work on emacs 23.
>> ---
>
>> 1) please could someone with emacs 23 see if the testsuite passes? My
>> system with emacs 23 is so outdated the test suite doesn't run (wrong
>> python versions I think).
>
> I get many failures like
>
> emacsclient.emacs23: connect: Connection refused
> emacsclient.emacs23: error accessing socket "/tmp/emacs1000/notmuch-test-suite-21492"
>
> At a guess, somehow the server is shutting down/dying. I did manage to
> manually run an emacs server on this machine, and the socket is being
> created in the file system.

The plot thickens. With this patch applied, I can generate an emacs
segfault with

1) EMACS=emacs23 ./devel/try-emacs-mua -q

2) M-x notmuch-search <return>

3) tag:inbox <return>

without the patch, I get a search view, and the message

        Wrong type argument: number-or-marker-p, entry-main

I'm not able to trigger a lisp backtrace.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-11-11 13:16   ` David Bremner
@ 2016-11-11 13:38     ` David Bremner
  2016-11-11 17:23       ` Tomi Ollila
  0 siblings, 1 reply; 8+ messages in thread
From: David Bremner @ 2016-11-11 13:38 UTC (permalink / raw)
  To: Mark Walters, notmuch

David Bremner <david@tethera.net> writes:

> The plot thickens. With this patch applied, I can generate an emacs
> segfault with
>
> 1) EMACS=emacs23 ./devel/try-emacs-mua -q
>
> 2) M-x notmuch-search <return>
>
> 3) tag:inbox <return>

OK, I managed to figure out the problem. I had byte compiled the emacs
code with emacs24, and loading that in emacs23 caused all heck to break
loose. With the byte compilation done with a matching version of emacs,
the test suite passes.

So my conclusions from all this fun:

1) since Mark went to the trouble of doing the compatiblity functions,
   we may as well get emacs23 working again.

2) It's getting hard to debug emacs23 problems, and developer time is
   scarce, so at the same time, deprecate emacs23 support, so e.g. after
   the next major release we can just drop it.

3) With the caveat that we plan to drop the compat functions, I leave it
   to mark's judgement whether it's worth putting them in a seperate
   file, or just adding the FSF copyright to the top of the file.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-11-11 13:38     ` David Bremner
@ 2016-11-11 17:23       ` Tomi Ollila
  2016-11-11 18:51         ` David Bremner
  2016-11-12 12:27         ` David Bremner
  0 siblings, 2 replies; 8+ messages in thread
From: Tomi Ollila @ 2016-11-11 17:23 UTC (permalink / raw)
  To: David Bremner, Mark Walters, notmuch

On Fri, Nov 11 2016, David Bremner <david@tethera.net> wrote:

> David Bremner <david@tethera.net> writes:
>
>> The plot thickens. With this patch applied, I can generate an emacs
>> segfault with
>>
>> 1) EMACS=emacs23 ./devel/try-emacs-mua -q
>>
>> 2) M-x notmuch-search <return>
>>
>> 3) tag:inbox <return>
>
> OK, I managed to figure out the problem. I had byte compiled the emacs
> code with emacs24, and loading that in emacs23 caused all heck to break
> loose. With the byte compilation done with a matching version of emacs,
> the test suite passes.

I tested this (almost 2 weeks ago :/) using debian wheezy (7.11) docker
container and all relevant (i.e. emacs) tests passed.

>
> So my conclusions from all this fun:
>
> 1) since Mark went to the trouble of doing the compatiblity functions,
>    we may as well get emacs23 working again.
>
> 2) It's getting hard to debug emacs23 problems, and developer time is
>    scarce, so at the same time, deprecate emacs23 support, so e.g. after
>    the next major release we can just drop it.

It is not hard at all. Just do not mess w/ mixed environments >;).

But this compatIbility change is not just emacs 23 -- iirc there were some
changes required to get emacs 24.1, 24.2, and 24.3 to work. It might be
easier to keep testing using emacs 23 until we deprecate everything before
emacs 24.4 (released October 20, 2014) -- or supporting emacs23 gets
nontrivial while supporting older emacs24 releases is still trivial (*)

(*) tried same with emacs22. when it got too hard we just did
ab30a846a49f576e1bfcd73f2ec41def474a6d96

I put the (new, shiny! ;) docker creation script I used to create this
wheezy container to:

https://github.com/domo141/nottoomuch/blob/dogfood/devel/test-in-docker.sh

(with https://github.com/domo141/nottoomuch/blob/dogfood/devel/test-on-macos.sh !)

> 3) With the caveat that we plan to drop the compat functions, I leave it
>    to mark's judgement whether it's worth putting them in a seperate
>    file, or just adding the FSF copyright to the top of the file.

compat functions will eventually be dropped (along with the code we already
have there to support emacs23)...

sepArate >;)

... but that said I'd suggest if there is going to be FSF copyright in the
file, create separate file for that.

and, also append 'g' to s/compatability/compatibility/ so that *all*
strings are replaced with correctly spelled version ;D

Tomi

PS: using google via smtpmail is pain... Now trying 3rd time... 5th...

got text message to go to google.com/blocked -- now 7th try...

8th... 9th...

Ok. It just fails. Sending the ordinary way (w/o google recipients, then).

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-11-11 17:23       ` Tomi Ollila
@ 2016-11-11 18:51         ` David Bremner
  2016-11-12 12:27         ` David Bremner
  1 sibling, 0 replies; 8+ messages in thread
From: David Bremner @ 2016-11-11 18:51 UTC (permalink / raw)
  To: Tomi Ollila, Mark Walters, notmuch

Tomi Ollila <tomi.ollila@iki.fi> writes:


>> 2) It's getting hard to debug emacs23 problems, and developer time is
>>    scarce, so at the same time, deprecate emacs23 support, so e.g. after
>>    the next major release we can just drop it.
>
> It is not hard at all. Just do not mess w/ mixed environments >;).

I guess a more accurate way of saying it is that I don't want to spend
time on it anymore. So I think I want to deprecate it anyway, with the
understanding that we'll keep supporting as long as we (we being someone
who is not me) can, but no guarantees.

d

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] emacs: add compatability functions for emacs 23
  2016-11-11 17:23       ` Tomi Ollila
  2016-11-11 18:51         ` David Bremner
@ 2016-11-12 12:27         ` David Bremner
  1 sibling, 0 replies; 8+ messages in thread
From: David Bremner @ 2016-11-12 12:27 UTC (permalink / raw)
  To: Tomi Ollila, Mark Walters, notmuch

Tomi Ollila <tomi.ollila@iki.fi> writes:


> But this compatIbility change is not just emacs 23 -- iirc there were some
> changes required to get emacs 24.1, 24.2, and 24.3 to work. It might be
> easier to keep testing using emacs 23 until we deprecate everything before
> emacs 24.4 (released October 20, 2014) -- or supporting emacs23 gets
> nontrivial while supporting older emacs24 releases is still trivial (*)

This might refer to the defadvice on ido-completing-read in
notmuch-mua.el. In any case that could also go is a seperate
compatability file.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-11-12 12:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-29 10:21 [PATCH v2] emacs: add compatability functions for emacs 23 Mark Walters
2016-11-02 23:57 ` Matt Armstrong
2016-11-11 12:11 ` David Bremner
2016-11-11 13:16   ` David Bremner
2016-11-11 13:38     ` David Bremner
2016-11-11 17:23       ` Tomi Ollila
2016-11-11 18:51         ` David Bremner
2016-11-12 12:27         ` David Bremner

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).