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

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

Date: Sat, 03 Nov 2012 23:03:43 +0200

To: Mark Walters, notmuch@notmuchmail.org

Cc:

From: Tomi Ollila


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

Thread: