[PATCH v2] contrib: notmuch-pick: add tests

Mark Walters markwalters1009 at gmail.com
Thu Nov 1 12:25:10 PDT 2012


The test should be run using the wrapper run-tests.sh.  This links
the tests into the normal notmuch TEST_DIRECTORY and runs them from
there. After the test is complete then the links are removed.
---

This is version 2 of the patches to add some tests for notmuch pick. 

The main change is that I have added Tomi's suggested wrapper script
(id:m2ip9srpd6.fsf at guru.guru-group.fi) which is much more robust and
generally better than the one I had.

The other changes are to split out the tests for the default async
parser from those for the sync parser. My guess is that the sync
parser should be removed but it can be useful for debugging so is
probably worth keeping until pick is closer to being ready for proper
mainline.

Best wishes

Mark




 contrib/notmuch-pick/README                        |    5 ++
 contrib/notmuch-pick/run-tests.sh                  |   46 ++++++++++++
 contrib/notmuch-pick/test/emacs-pick               |   76 ++++++++++++++++++++
 contrib/notmuch-pick/test/emacs-pick-sync          |   64 ++++++++++++++++
 .../pick.expected-output/notmuch-pick-show-window  |   32 ++++++++
 .../notmuch-pick-single-thread                     |    6 ++
 .../pick.expected-output/notmuch-pick-tag-inbox    |   53 ++++++++++++++
 7 files changed, 282 insertions(+), 0 deletions(-)
 create mode 100755 contrib/notmuch-pick/run-tests.sh
 create mode 100755 contrib/notmuch-pick/test/emacs-pick
 create mode 100755 contrib/notmuch-pick/test/emacs-pick-sync
 create mode 100644 contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-show-window
 create mode 100644 contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-single-thread
 create mode 100644 contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-tag-inbox

diff --git a/contrib/notmuch-pick/README b/contrib/notmuch-pick/README
index 8eed974..4200824 100644
--- a/contrib/notmuch-pick/README
+++ b/contrib/notmuch-pick/README
@@ -15,6 +15,11 @@ Then after the "(require 'notmuch)" line in your .emacs file add
 the line "(require 'notmuch-pick nil t)". This will load notmuch-pick on
 your next emacs start.
 
+TEST
+
+Just execute run-tests.sh and it should all work (it does require that
+notmuch has already been built).
+
 USING PICK
 
 The main key entries to notmuch pick are
diff --git a/contrib/notmuch-pick/run-tests.sh b/contrib/notmuch-pick/run-tests.sh
new file mode 100755
index 0000000..97cc9e8
--- /dev/null
+++ b/contrib/notmuch-pick/run-tests.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+set -eu
+
+fail() {
+    echo ERROR $1
+    exit 1
+}
+
+TESTS="emacs-pick emacs-pick-sync"
+TESTFILES="$TESTS pick.expected-output"
+
+PICK_DIR="`cd \`dirname "$0"\` && pwd`"
+PICK_TEST_DIR="$PICK_DIR/test"
+
+
+for f in $TESTFILES
+do
+    test -f "$PICK_TEST_DIR/$f" || test -d "$PICK_TEST_DIR/$f" || fail "$PICK_TEST_DIR/$f does not exist"
+done
+
+cd "$PICK_DIR/../../test"
+
+test -x ../notmuch || fail "`cd .. && pwd`/notmuch has not been built"
+
+for f in $TESTFILES
+do
+    if test -f "$f"
+    then
+	fail "$f exists"
+    fi
+done
+
+trap "rm -f $TESTFILES" 0
+
+for f in $TESTFILES
+do
+    ln -s "$PICK_TEST_DIR/$f" .
+done
+
+#don't exec -- traps would not run.
+for f in $TESTS
+do
+    echo $f
+    ./$f
+done
diff --git a/contrib/notmuch-pick/test/emacs-pick b/contrib/notmuch-pick/test/emacs-pick
new file mode 100755
index 0000000..9db4b34
--- /dev/null
+++ b/contrib/notmuch-pick/test/emacs-pick
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+test_description="emacs pick interface"
+. test-lib.sh
+
+EXPECTED=$TEST_DIRECTORY/pick.expected-output
+
+add_email_corpus
+test_begin_subtest "Do we have emacs"
+test_emacs '(insert "hello\n")
+	    (test-output)'
+cat <<EOF >EXPECTED
+hello
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
+test_begin_subtest "Basic notmuch-pick view in emacs"
+test_emacs '(add-to-list (quote load-path) "'$PICK_DIR'")
+	    (require (quote notmuch-pick))
+	    (notmuch-pick "tag:inbox")
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-tag-inbox
+
+test_begin_subtest "Navigation of notmuch-hello to search results"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-pick-from-search-current-query)
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-tag-inbox
+
+test_begin_subtest "Pick of a single thread (from search)"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-pick-from-search-thread)
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-single-thread
+
+test_begin_subtest "Pick of a single thread (from show)"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-search-show-thread)
+	    (notmuch-pick-from-show-current-query)
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-single-thread
+
+test_begin_subtest "Message window of pick"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-pick-from-search-thread)
+	    (notmuch-test-wait)
+	    (select-window notmuch-pick-message-window)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-show-window
+
+test_done
diff --git a/contrib/notmuch-pick/test/emacs-pick-sync b/contrib/notmuch-pick/test/emacs-pick-sync
new file mode 100755
index 0000000..a7da0ff
--- /dev/null
+++ b/contrib/notmuch-pick/test/emacs-pick-sync
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+
+test_description="emacs pick interface (sync parser)"
+. test-lib.sh
+
+EXPECTED=$TEST_DIRECTORY/pick.expected-output
+
+add_email_corpus
+test_begin_subtest "Do we have emacs"
+test_emacs '(insert "hello\n")
+	    (test-output)'
+cat <<EOF >EXPECTED
+hello
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
+test_begin_subtest "Basic notmuch-pick view in emacs"
+test_emacs '(add-to-list (quote load-path) "'$PICK_DIR'")
+	    (require (quote notmuch-pick))
+	    (setq notmuch-pick-asynchronous-parser nil)
+	    (notmuch-pick "tag:inbox")
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-tag-inbox
+
+test_begin_subtest "Navigation of notmuch-hello to search results"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-pick-from-search-current-query)
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-tag-inbox
+
+test_begin_subtest "Pick of a single thread (from search)"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-pick-from-search-thread)
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-single-thread
+
+test_begin_subtest "Pick of a single thread (from show)"
+test_emacs '(notmuch-hello)
+	    (goto-char (point-min))
+	    (re-search-forward "inbox")
+	    (widget-button-press (1- (point)))
+	    (notmuch-test-wait)
+	    (notmuch-search-show-thread)
+	    (notmuch-pick-from-show-current-query)
+	    (notmuch-test-wait)
+	    (test-output)
+	    (delete-other-windows)'
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-pick-single-thread
+
+test_done
diff --git a/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-show-window b/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-show-window
new file mode 100644
index 0000000..de37267
--- /dev/null
+++ b/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-show-window
@@ -0,0 +1,32 @@
+Mikhail Gusarov <dottedmag at dottedmag.net> (2009-11-17) (inbox)
+Subject: [notmuch] [PATCH 1/2] Close message file after parsing message	headers
+To: notmuch at notmuchmail.org
+Date: Tue, 17 Nov 2009 21:28:37 +0600
+
+Keeping unused files open helps to see "Too many open files" often.
+
+Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
+---
+ lib/message-file.c |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/lib/message-file.c b/lib/message-file.c
+index 8a3f8ee..197ab01 100644
+--- a/lib/message-file.c
++++ b/lib/message-file.c
+@@ -325,6 +325,11 @@ notmuch_message_file_get_header (notmuch_message_file_t
+*message,
+	    return decoded_value;
+     }
+
++    if (message->parsing_finished) {
++        fclose (message->file);
++        message->file = NULL;
++    }
++
+     if (message->line)
+	free (message->line);
+     message->line = NULL;
+[ 2-line signature. Click/Enter to show. ]
+-- 
+1.6.3.3
diff --git a/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-single-thread b/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-single-thread
new file mode 100644
index 0000000..c9e5ef8
--- /dev/null
+++ b/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-single-thread
@@ -0,0 +1,6 @@
+  2009-11-17  Mikhail Gusarov       ┬►[notmuch] [PATCH 1/2] Close message file after parsing message	headers (inbox)
+  2009-11-17  Mikhail Gusarov       ├─►[notmuch] [PATCH 2/2] Include <stdint.h> to get uint32_t in C++	file with gcc 4.4 (inbox, unread)
+  2009-11-17  Carl Worth            ╰┬►[notmuch] [PATCH 1/2] Close message file after parsing message headers (inbox, unread)
+  2009-11-17  Keith Packard          ╰┬► ...                                              (inbox, unread)
+  2009-11-18  Carl Worth              ╰─► ...                                             (inbox, unread)
+End of search results.
diff --git a/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-tag-inbox b/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-tag-inbox
new file mode 100644
index 0000000..484141e
--- /dev/null
+++ b/contrib/notmuch-pick/test/pick.expected-output/notmuch-pick-tag-inbox
@@ -0,0 +1,53 @@
+  2010-12-29  François Boulogne     ─►[aur-general] Guidelines: cp, mkdir vs install      (inbox, unread)
+  2010-12-16  Olivier Berger        ─►Essai accentué                                      (inbox, unread)
+  2009-11-18  Chris Wilson          ─►[notmuch] [PATCH 1/2] Makefile: evaluate pkg-config once (inbox, unread)
+  2009-11-18  Alex Botero-Lowry     ┬►[notmuch] [PATCH] Error out if no query is supplied to search	instead of going into an infinite loop (attachment, inbox, unread)
+  2009-11-18  Carl Worth            ╰─►[notmuch] [PATCH] Error out if no query is supplied to search instead of going into an infinite loop (inbox, unread)
+  2009-11-17  Ingmar Vanhassel      ┬►[notmuch] [PATCH] Typsos                            (inbox, unread)
+  2009-11-18  Carl Worth            ╰─► ...                                               (inbox, unread)
+  2009-11-17  Adrian Perez de Cast  ┬►[notmuch] Introducing myself                        (inbox, signed, unread)
+  2009-11-18  Keith Packard         ├─► ...                                               (inbox, unread)
+  2009-11-18  Carl Worth            ╰─► ...                                               (inbox, unread)
+  2009-11-17  Israel Herraiz        ┬►[notmuch] New to the list                           (inbox, unread)
+  2009-11-18  Keith Packard         ├─► ...                                               (inbox, unread)
+  2009-11-18  Carl Worth            ╰─► ...                                               (inbox, unread)
+  2009-11-17  Jan Janak             ┬►[notmuch] What a great idea!                        (inbox, unread)
+  2009-11-17  Jan Janak             ├─► ...                                               (inbox, unread)
+  2009-11-18  Carl Worth            ╰─► ...                                               (inbox, unread)
+  2009-11-17  Jan Janak             ┬►[notmuch] [PATCH] Older versions of install do not support -C. (inbox, unread)
+  2009-11-18  Carl Worth            ╰─► ...                                               (inbox, unread)
+  2009-11-17  Aron Griffis          ┬►[notmuch] archive                                   (inbox, unread)
+  2009-11-18  Keith Packard         ╰┬► ...                                               (inbox, unread)
+  2009-11-18  Carl Worth             ╰─► ...                                              (inbox, unread)
+  2009-11-17  Keith Packard         ┬►[notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove	inbox (and unread) tags (inbox, unread)
+  2009-11-18  Carl Worth            ╰─►[notmuch] [PATCH] Make notmuch-show 'X' (and 'x') commands remove inbox (and unread) tags (inbox, unread)
+  2009-11-17  Lars Kellogg-Stedman  ┬►[notmuch] Working with Maildir storage?             (inbox, signed, unread)
+  2009-11-17  Mikhail Gusarov       ├┬► ...                                               (inbox, signed, unread)
+  2009-11-17  Lars Kellogg-Stedman  │╰┬► ...                                              (inbox, signed, unread)
+  2009-11-17  Mikhail Gusarov       │ ├─► ...                                             (inbox, unread)
+  2009-11-17  Keith Packard         │ ╰┬► ...                                             (inbox, unread)
+  2009-11-18  Lars Kellogg-Stedman  │  ╰─► ...                                            (inbox, signed, unread)
+  2009-11-18  Carl Worth            ╰─► ...                                               (inbox, unread)
+  2009-11-17  Mikhail Gusarov       ┬►[notmuch] [PATCH 1/2] Close message file after parsing message	headers (inbox, unread)
+  2009-11-17  Mikhail Gusarov       ├─►[notmuch] [PATCH 2/2] Include <stdint.h> to get uint32_t in C++	file with gcc 4.4 (inbox, unread)
+  2009-11-17  Carl Worth            ╰┬►[notmuch] [PATCH 1/2] Close message file after parsing message headers (inbox, unread)
+  2009-11-17  Keith Packard          ╰┬► ...                                              (inbox, unread)
+  2009-11-18  Carl Worth              ╰─► ...                                             (inbox, unread)
+  2009-11-18  Keith Packard         ┬►[notmuch] [PATCH] Create a default notmuch-show-hook that	highlights URLs and uses word-wrap (inbox, unread)
+  2009-11-18  Alexander Botero-Low  ╰─►[notmuch] [PATCH] Create a default notmuch-show-hook that highlights URLs and uses word-wrap (inbox, unread)
+  2009-11-18  Alexander Botero-Low  ─►[notmuch] request for pull                          (inbox, unread)
+  2009-11-18  Jjgod Jiang           ┬►[notmuch] Mac OS X/Darwin compatibility issues      (inbox, unread)
+  2009-11-18  Alexander Botero-Low  ╰┬► ...                                               (inbox, unread)
+  2009-11-18  Jjgod Jiang            ╰┬► ...                                              (inbox, unread)
+  2009-11-18  Alexander Botero-Low    ╰─► ...                                             (inbox, unread)
+  2009-11-18  Rolland Santimano     ─►[notmuch] Link to mailing list archives ?           (inbox, unread)
+  2009-11-18  Jan Janak             ─►[notmuch] [PATCH] notmuch new: Support for conversion of spool	subdirectories into tags (inbox, unread)
+  2009-11-18  Stewart Smith         ─►[notmuch] [PATCH] count_files: sort directory in inode order before	statting (inbox, unread)
+  2009-11-18  Stewart Smith         ─►[notmuch] [PATCH 2/2] Read mail directory in inode number order (inbox, unread)
+  2009-11-18  Stewart Smith         ─►[notmuch] [PATCH] Fix linking with gcc to use g++ to link in C++	libs. (inbox, unread)
+  2009-11-18  Lars Kellogg-Stedman  ┬►[notmuch] "notmuch help" outputs to stderr?         (attachment, inbox, signed, unread)
+  2009-11-18  Lars Kellogg-Stedman  ╰─► ...                                               (attachment, inbox, signed, unread)
+  2009-11-17  Mikhail Gusarov       ─►[notmuch] [PATCH] Handle rename of message file     (inbox, unread)
+  2009-11-17  Alex Botero-Lowry     ┬►[notmuch] preliminary FreeBSD support               (attachment, inbox, unread)
+  2009-11-17  Carl Worth            ╰─► ...                                               (inbox, unread)
+End of search results.
-- 
1.7.9.1



More information about the notmuch mailing list