test: New test for incremental search output parsing

This advises the search process filter to make it process one
character at a time in order to test the pessimal case for incremental
search output parsing.

The text parser fails this test because it gets tricked into thinking
a parenthetical remark in a subject is the tag list.
This commit is contained in:
Austin Clements 2012-07-09 17:42:39 -04:00 committed by David Bremner
parent 1a5bcdf6c1
commit f94a50d80a
2 changed files with 19 additions and 0 deletions

View file

@ -35,6 +35,17 @@ test_emacs '(notmuch-search "tag:inbox")
(test-output)'
test_expect_equal_file OUTPUT $EXPECTED/notmuch-search-tag-inbox
test_begin_subtest "Incremental parsing of search results"
test_subtest_known_broken
test_emacs "(ad-enable-advice 'notmuch-search-process-filter 'around 'pessimal)
(ad-activate 'notmuch-search-process-filter)
(notmuch-search \"tag:inbox\")
(notmuch-test-wait)
(ad-disable-advice 'notmuch-search-process-filter 'around 'pessimal)
(ad-activate 'notmuch-search-process-filter)
(test-output)"
test_expect_equal_file OUTPUT $EXPECTED/notmuch-search-tag-inbox
test_begin_subtest "Navigation of notmuch-hello to search results"
test_emacs '(notmuch-hello)
(goto-char (point-min))

View file

@ -89,6 +89,14 @@ nothing."
(add-hook-counter 'notmuch-hello-mode-hook)
(add-hook-counter 'notmuch-hello-refresh-hook)
(defadvice notmuch-search-process-filter (around pessimal activate disable)
"Feed notmuch-search-process-filter one character at a time."
(let ((string (ad-get-arg 1)))
(loop for char across string
do (progn
(ad-set-arg 1 (char-to-string char))
ad-do-it))))
(defmacro notmuch-test-run (&rest body)
"Evaluate a BODY of test expressions and output the result."
`(with-temp-buffer