2012-11-07 21:43:27 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_description="emacs tree view interface"
|
2017-09-25 22:38:19 +02:00
|
|
|
. $(dirname "$0")/test-lib.sh || exit 1
|
2021-05-23 09:34:43 +02:00
|
|
|
. $NOTMUCH_SRCDIR/test/test-lib-emacs.sh || exit 1
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2018-04-19 10:41:01 +02:00
|
|
|
EXPECTED=$NOTMUCH_SRCDIR/test/emacs-tree.expected-output
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2021-05-01 13:54:16 +02:00
|
|
|
test_require_emacs
|
2012-11-07 21:43:27 +01:00
|
|
|
add_email_corpus
|
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Basic notmuch-tree view in emacs"
|
2013-12-14 23:58:32 +01:00
|
|
|
test_emacs '(notmuch-tree "tag:inbox")
|
2012-11-07 21:43:27 +01:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox OUTPUT
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Refreshed notmuch-tree view in emacs"
|
2013-12-14 23:58:32 +01:00
|
|
|
test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-02 22:15:14 +02:00
|
|
|
(notmuch-test-wait)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-refresh-view)
|
2013-09-02 22:15:14 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox OUTPUT
|
2013-09-02 22:15:14 +02:00
|
|
|
|
2013-09-03 16:04:57 +02:00
|
|
|
# In the following tag tests we make sure the display is updated
|
|
|
|
# correctly and, in a separate test, that the database is updated
|
|
|
|
# correctly.
|
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Tag message in notmuch tree view (display)"
|
2013-12-14 23:58:32 +01:00
|
|
|
test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:04:57 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(forward-line)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-tag (list "+test_tag"))
|
2013-09-03 16:04:57 +02:00
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox-tagged OUTPUT
|
2013-09-03 16:04:57 +02:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Tag message in notmuch tree view (database)"
|
2013-09-03 16:04:57 +02:00
|
|
|
output=$(notmuch search --output=messages 'tag:test_tag')
|
|
|
|
test_expect_equal "$output" "id:877h1wv7mg.fsf@inf-8657.int-evry.fr"
|
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Untag message in notmuch tree view"
|
2013-12-14 23:58:32 +01:00
|
|
|
test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:04:57 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(forward-line)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-tag (list "-test_tag"))
|
2013-09-03 16:04:57 +02:00
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox OUTPUT
|
2013-09-03 16:04:57 +02:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Untag message in notmuch tree view (database)"
|
2013-09-03 16:04:57 +02:00
|
|
|
output=$(notmuch search --output=messages 'tag:test_tag')
|
|
|
|
test_expect_equal "$output" ""
|
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Tag thread in notmuch tree view"
|
2013-12-14 23:58:32 +01:00
|
|
|
test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:04:58 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
;; move to a sizable thread
|
|
|
|
(forward-line 26)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-tag-thread (list "+test_thread_tag"))
|
2013-09-03 16:04:58 +02:00
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox-thread-tagged OUTPUT
|
2013-09-03 16:04:58 +02:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Tag message in notmuch tree view (database)"
|
2013-09-03 16:04:58 +02:00
|
|
|
output=$(notmuch search --output=messages 'tag:test_thread_tag')
|
|
|
|
test_expect_equal "$output" \
|
|
|
|
"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"
|
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Untag thread in notmuch tree view"
|
2013-12-14 23:58:32 +01:00
|
|
|
test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:04:58 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
;; move to the same sizable thread as above
|
|
|
|
(forward-line 26)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-tag-thread (list "-test_thread_tag"))
|
2013-09-03 16:04:58 +02:00
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox OUTPUT
|
2013-09-03 16:04:58 +02:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Untag message in notmuch tree view (database)"
|
2013-09-03 16:04:58 +02:00
|
|
|
output=$(notmuch search --output=messages 'tag:test_thread_tag')
|
|
|
|
test_expect_equal "$output" ""
|
|
|
|
|
2012-11-07 21:43:27 +01:00
|
|
|
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)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-from-search-current-query)
|
2012-11-07 21:43:27 +01:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2024-03-10 19:57:41 +01:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox-oldest-first OUTPUT
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Tree view of a single thread (from search)"
|
2012-11-07 21:43:27 +01:00
|
|
|
test_emacs '(notmuch-hello)
|
|
|
|
(goto-char (point-min))
|
|
|
|
(re-search-forward "inbox")
|
|
|
|
(widget-button-press (1- (point)))
|
|
|
|
(notmuch-test-wait)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-from-search-thread)
|
2012-11-07 21:43:27 +01:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-single-thread OUTPUT
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Tree view of a single thread (from show)"
|
2012-11-07 21:43:27 +01:00
|
|
|
test_emacs '(notmuch-hello)
|
|
|
|
(goto-char (point-min))
|
|
|
|
(re-search-forward "inbox")
|
|
|
|
(widget-button-press (1- (point)))
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(notmuch-search-show-thread)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-from-show-current-query)
|
2012-11-07 21:43:27 +01:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-single-thread OUTPUT
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2013-10-27 00:02:06 +02:00
|
|
|
test_begin_subtest "Message window of tree view"
|
2012-11-07 21:43:27 +01:00
|
|
|
test_emacs '(notmuch-hello)
|
|
|
|
(goto-char (point-min))
|
|
|
|
(re-search-forward "inbox")
|
|
|
|
(widget-button-press (1- (point)))
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(notmuch-search-next-thread)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-from-search-thread)
|
2012-11-07 21:43:27 +01:00
|
|
|
(notmuch-test-wait)
|
2013-10-27 00:02:05 +02:00
|
|
|
(select-window notmuch-tree-message-window)
|
2012-11-07 21:43:27 +01:00
|
|
|
(test-output)
|
|
|
|
(delete-other-windows)'
|
2017-04-05 02:36:29 +02:00
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-show-window OUTPUT
|
2012-11-07 21:43:27 +01:00
|
|
|
|
2013-09-03 16:04:59 +02:00
|
|
|
test_begin_subtest "Stash id"
|
2013-12-14 23:58:32 +01:00
|
|
|
output=$(test_emacs '(notmuch-tree "id:1258498485-sup-142@elly")
|
2013-09-03 16:04:59 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(notmuch-show-stash-message-id)')
|
|
|
|
test_expect_equal "$output" "\"Stashed: id:1258498485-sup-142@elly\""
|
|
|
|
|
2013-09-03 16:05:00 +02:00
|
|
|
test_begin_subtest "Move to next matching message"
|
2013-12-14 23:58:32 +01:00
|
|
|
output=$(test_emacs '(notmuch-tree "from:cworth")
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-test-wait)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-next-matching-message)
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-show-stash-message-id)')
|
|
|
|
test_expect_equal "$output" "\"Stashed: id:878we4qdqf.fsf@yoom.home.cworth.org\""
|
|
|
|
|
|
|
|
test_begin_subtest "Move to next thread"
|
2013-12-14 23:58:32 +01:00
|
|
|
output=$(test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(forward-line 26)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-next-thread)
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-show-stash-message-id)')
|
|
|
|
test_expect_equal "$output" "\"Stashed: id:1258471718-6781-1-git-send-email-dottedmag@dottedmag.net\""
|
|
|
|
|
|
|
|
test_begin_subtest "Move to previous thread"
|
2013-12-14 23:58:32 +01:00
|
|
|
output=$(test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(forward-line 26)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-prev-thread)
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-show-stash-message-id)')
|
|
|
|
test_expect_equal "$output" "\"Stashed: id:20091117190054.GU3165@dottiness.seas.harvard.edu\""
|
|
|
|
|
|
|
|
test_begin_subtest "Move to previous previous thread"
|
2013-12-14 23:58:32 +01:00
|
|
|
output=$(test_emacs '(notmuch-tree "tag:inbox")
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-test-wait)
|
|
|
|
(forward-line 26)
|
2013-10-27 00:02:05 +02:00
|
|
|
(notmuch-tree-prev-thread)
|
|
|
|
(notmuch-tree-prev-thread)
|
2013-09-03 16:05:00 +02:00
|
|
|
(notmuch-show-stash-message-id)')
|
|
|
|
test_expect_equal "$output" "\"Stashed: id:1258493565-13508-1-git-send-email-keithp@keithp.com\""
|
|
|
|
|
2021-08-30 21:49:06 +02:00
|
|
|
test_begin_subtest "Functions in tree-result-format"
|
|
|
|
test_emacs '
|
|
|
|
(let
|
|
|
|
((notmuch-tree-result-format
|
|
|
|
(quote (("date" . "%12s ")
|
|
|
|
("authors" . "%-20s")
|
|
|
|
((("tree" . "%s")
|
|
|
|
("subject" . "%s")) . " %-54s ")
|
|
|
|
(notmuch-test-result-flags . "(%s)")))))
|
|
|
|
(notmuch-tree "tag:inbox")
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output))
|
|
|
|
'
|
|
|
|
test_expect_equal_file $EXPECTED/result-format-function OUTPUT
|
|
|
|
|
2021-08-29 21:23:35 +02:00
|
|
|
test_begin_subtest "notmuch-tree with nonexistent CWD"
|
|
|
|
test_emacs '(test-log-error
|
|
|
|
(let ((default-directory "/nonexistent"))
|
|
|
|
(notmuch-tree "*")))'
|
|
|
|
test_expect_equal "$(cat MESSAGES)" "COMPLETE"
|
|
|
|
|
2022-12-13 03:15:42 +01:00
|
|
|
# reinitialize database for outline tests
|
|
|
|
add_email_corpus
|
|
|
|
|
|
|
|
test_begin_subtest "start in outline mode"
|
|
|
|
test_emacs '(let ((notmuch-tree-outline-enabled t))
|
|
|
|
(notmuch-tree "tag:inbox")
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-visible-output))'
|
|
|
|
# folding all messages by height or depth should look the same
|
|
|
|
test_expect_equal_file $EXPECTED/inbox-outline OUTPUT
|
|
|
|
|
|
|
|
test_begin_subtest "outline-cycle-buffer"
|
|
|
|
test_emacs '(let ((notmuch-tree-outline-enabled t))
|
|
|
|
(notmuch-tree "tag:inbox")
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(outline-cycle-buffer)
|
|
|
|
(outline-cycle-buffer)
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-visible-output))'
|
|
|
|
# folding all messages by height or depth should look the same
|
|
|
|
test_expect_equal_file $EXPECTED/notmuch-tree-tag-inbox OUTPUT
|
|
|
|
|
2024-05-20 13:58:57 +02:00
|
|
|
test_begin_subtest "notmuch-tree for message with subject with embedded CRNL"
|
|
|
|
add_message "[subject]=\"=?UTF-8?B?8J+Pi++4jw==?= A SALE to boost your =?UTF-8?Q?workout=0D=0A?=\" [body]=the-message-body"
|
|
|
|
test_emacs "(notmuch-tree \"id:${gen_msg_id}\")
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(test-output)"
|
|
|
|
# one line of output, plus "End of search results."
|
|
|
|
test_expect_equal "$(wc -l < OUTPUT)" 2
|
|
|
|
|
2022-07-01 23:45:45 +02:00
|
|
|
add_email_corpus duplicate
|
|
|
|
|
|
|
|
ID3=87r2ecrr6x.fsf@zephyr.silentflame.com
|
2022-07-01 23:45:46 +02:00
|
|
|
test_begin_subtest "duplicate=3, subject"
|
2022-07-01 23:45:45 +02:00
|
|
|
test_emacs "(notmuch-tree \"id:${ID3}\")
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(notmuch-tree-show-message t)
|
|
|
|
(notmuch-show-choose-duplicate 3)
|
|
|
|
(test-visible-output \"OUTPUT\")"
|
|
|
|
output=$(grep "Subject:" OUTPUT)
|
|
|
|
file=$(notmuch search --output=files id:${ID3} | head -n 3 | tail -n 1)
|
|
|
|
subject=$(grep '^Subject:' $file)
|
|
|
|
test_expect_equal "$output" "$subject"
|
|
|
|
|
2022-07-01 23:45:46 +02:00
|
|
|
test_begin_subtest "duplicate=4"
|
|
|
|
test_emacs "(notmuch-show \"id:${ID3}\")
|
|
|
|
(notmuch-test-wait)
|
|
|
|
(notmuch-tree-show-message t)
|
|
|
|
(notmuch-show-choose-duplicate 4)
|
|
|
|
(test-visible-output \"OUTPUT\")"
|
|
|
|
test_expect_equal_file_nonempty $NOTMUCH_SRCDIR/test/emacs-show.expected-output/notmuch-show-duplicate-4 OUTPUT
|
|
|
|
|
2012-11-07 21:43:27 +01:00
|
|
|
test_done
|