On Thu, Nov 01 2012, Mark Walters <markwalters1009@gmail.com> wrote: > 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. > --- 2 things: The PICK_DIR variable needs export in run-tests.sh, otherwise it is not (always??!!) available for test scripts (all tests failed for me until I added that export (fatal). git am informs test/pick.expected-output/notmuch-pick-show-window has trailing whitespace when applied. Could you arrange your test to use other message there (wish). Tomi > > 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@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@dottedmag.net> (2009-11-17) (inbox) > +Subject: [notmuch] [PATCH 1/2] Close message file after parsing message headers > +To: notmuch@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 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch