X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=test%2Femacs;h=dd3acc0ecdd1962f989b9a91d3b1753d1c9a97a0;hb=a3883a7e17171381b8b495ce6efd931c8f420c90;hp=f9db5d118a1dca8b58a938470c7f6247512a6c0e;hpb=1375d71ff41de7c189f9c3ac4f72a8a617d4a5a7;p=notmuch diff --git a/test/emacs b/test/emacs index f9db5d11..dd3acc0e 100755 --- a/test/emacs +++ b/test/emacs @@ -2,24 +2,93 @@ test_description="emacs interface" . test-lib.sh +EXPECTED=../emacs.expected-output + add_email_corpus -test_begin_subtest "Test emacs-hello interface" +test_begin_subtest "Basic notmuch-hello view in emacs" output=$(test_emacs '(notmuch-hello) (message (buffer-string))' 2>&1) -test_expect_equal "$output" " Welcome to notmuch. You have 50 messages (that's not much mail). +expected=$(cat $EXPECTED/notmuch-hello) +test_expect_equal "$output" "$expected" + +test_begin_subtest "Basic notmuch-search view in emacs" +output=$(test_emacs '(notmuch-search "tag:inbox") (notmuch-test-wait) (message (buffer-string))' 2>&1) +expected=$(cat $EXPECTED/notmuch-search-tag-inbox) +test_expect_equal "$output" "$expected" + +test_begin_subtest "Navigation of notmuch-hello to search results + [XXX: Need to decide the correct order of the search results]" +output=$(test_emacs '(notmuch-hello) (goto-char (point-min)) (re-search-forward "inbox") (widget-button-press (point)) (notmuch-test-wait) (message (buffer-string))' 2>&1) +test_expect_equal_failure "$output" "$expected" + +test_begin_subtest "Basic notmuch-show view in emacs" +output=$(test_emacs '(notmuch-show "thread:0000000000000009") (message (buffer-string))' 2>&1) +expected=$(cat $EXPECTED/notmuch-show-thread-9) +test_expect_equal "$output" "$expected" + +test_begin_subtest "Navigation of notmuch-search to thread view" +output=$(test_emacs '(notmuch-search "tag:inbox") (notmuch-test-wait) (goto-char (point-min)) (re-search-forward "Working with Maildir") (notmuch-search-show-thread) (notmuch-test-wait) (message (buffer-string))' 2>&1) +test_expect_equal "$output" "$expected" + +test_begin_subtest "Add tag from search view" +test_emacs '(notmuch-search "thread:0000000000000001") (notmuch-test-wait) (notmuch-search-add-tag "tag-from-search-view")' +output=$(notmuch search thread:0000000000000001) +test_expect_equal "$output" "thread:0000000000000001 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-search-view unread)" + +test_begin_subtest "Remove tag from search view" +test_emacs '(notmuch-search "thread:0000000000000001") (notmuch-test-wait) (notmuch-search-remove-tag "tag-from-search-view")' +output=$(notmuch search thread:0000000000000001) +test_expect_equal "$output" "thread:0000000000000001 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" + +test_begin_subtest "Add tag from notmuch-show view" +test_emacs '(notmuch-show "thread:0000000000000001") (notmuch-show-add-tag "tag-from-show-view")' +output=$(notmuch search thread:0000000000000001) +test_expect_equal "$output" "thread:0000000000000001 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-show-view unread)" + +test_begin_subtest "Remove tag from notmuch-show view" +test_emacs '(notmuch-show "thread:0000000000000001") (notmuch-show-remove-tag "tag-from-show-view")' +output=$(notmuch search thread:0000000000000001) +test_expect_equal "$output" "thread:0000000000000001 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" + +test_begin_subtest "Message with .. in Message-Id:" +add_message [id]=123..456@example '[subject]="Message with .. in Message-Id"' +test_emacs '(notmuch-search "id:\"123..456@example\"") (notmuch-test-wait) (notmuch-search-add-tag "search-add") (notmuch-search-add-tag "search-remove") (notmuch-search-remove-tag "search-remove") (notmuch-show "id:\"123..456@example\"") (notmuch-test-wait) (notmuch-show-add-tag "show-add") (notmuch-show-add-tag "show-remove") (notmuch-show-remove-tag "show-remove")' +output=$(notmuch search 'id:"123..456@example"' | notmuch_search_sanitize) +test_expect_equal "$output" "thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Message with .. in Message-Id (inbox search-add show-add)" -Saved searches: [edit] +test_begin_subtest "Sending a message via (fake) SMTP" - 50 inbox 50 unread +# Before we can send a message, we have to prepare the FCC maildir +mkdir -p mail/sent/cur +mkdir -p mail/sent/new +mkdir -p mail/sent/tmp -Search: +../smtp-dummy sent_message & +smtp_dummy_pid=$! +test_emacs "(setq message-send-mail-function 'message-smtpmail-send-it) (setq smtpmail-smtp-server \"localhost\") (setq smtpmail-smtp-service \"25025\") (notmuch-hello) (notmuch-mua-mail) (message-goto-to) (insert \"user@example.com\") (message-goto-subject) (insert \"Testing message sent via SMTP\") (message-goto-body) (insert \"This is a test that messages are sent via SMTP\") (message-send-and-exit)" >/dev/null 2>&1 +wait ${smtp_dummy_pid} -[Show all tags] +# XXX: Masking away the User-Agent, Date, and Message-ID makes sense, +# since these fields are inherently unpredictable. But doing the same +# thing with the From address is cheating. What should really be +# happening here is that the emacs interface should be using something +# like "notmuch compose" to construct the initial message and it +# should be getting the user's name and email address from the notmuch +# configuration file. - Type a search query and hit RET to view matching threads. - Edit saved searches with the \`edit' button. - Hit RET or click on a saved search or tag name to view matching threads. - \`=' refreshes this screen. \`s' jumps to the search box. \`q' to quit." +output=$(sed -e 's,^From: .*,From: XXX,' \ + -e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \ + -e s',^Date:.*,Date: XXX,' \ + -e s',^Message-ID: <.*>$,Message-ID: ,' < sent_message) +test_expect_equal "$output" "From: XXX +To: user@example.com +Subject: Testing message sent via SMTP +User-Agent: Notmuch/XXX Emacs/XXX +Date: XXX +Message-ID: +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +This is a test that messages are sent via SMTP" test_done