From: Carl Worth Date: Fri, 11 Mar 2011 00:53:46 +0000 (-0800) Subject: emacs: Don't drop error messages from "notmuch search" X-Git-Tag: debian/0.6_254~173 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=708c4f46caae76d4366a6a8de369943a3adef443;hp=8a534dc60d5f4bf579eabda9ae482a1982de3e4e emacs: Don't drop error messages from "notmuch search" With the previous commit, unexpected output before or between search results would be displayed. However, trailing junk from the "notmuch search" output would still be silently swallowed. The most common case for an error message from "notmuch search" would be an invalid command-line, and in that case, there would be no search results and the trailing error message would get swallowed. We fix the process sentinel to check for leftover data and add it to the final buffer. We also add a test case to ensure this works. --- diff --git a/emacs/notmuch.el b/emacs/notmuch.el index dbf269a5..d9a6b67a 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -580,6 +580,8 @@ This function advances the next thread when finished." (insert "Incomplete search results (search process was killed).\n")) (if (eq status 'exit) (progn + (if notmuch-search-process-filter-data + (insert (concat "Error: Unexpected output from notmuch search:\n" notmuch-search-process-filter-data))) (insert "End of search results.") (if (not (= exit-status 0)) (insert (format " (process returned %d)" exit-status))) diff --git a/test/emacs-large-search-buffer b/test/emacs-large-search-buffer index 78b3ae8b..a3b5c79c 100755 --- a/test/emacs-large-search-buffer +++ b/test/emacs-large-search-buffer @@ -18,10 +18,16 @@ done notmuch new > /dev/null -test_begin_subtest 'Comparing emacs result to "notmuch search"' +test_begin_subtest "Ensure that emacs doesn't drop results" expected="$(notmuch search '*' | sed -e 's/^thread:[0-9a-f]* //' -e 's/;//' -e 's/xx*/[BLOB]/') End of search results." output=$(test_emacs '(notmuch-search "*") (notmuch-test-wait) (message (buffer-string))' 2>&1 | sed -e s', *, ,g' -e 's/xxx*/[BLOB]/g') test_expect_equal "$output" "$expected" +test_begin_subtest "Ensure that emacs doesn't drop error messages" +output=$(test_emacs '(notmuch-search "--this-option-does-not-exist") (notmuch-test-wait) (message (buffer-string))' 2>&1) +test_expect_equal "$output" "Error: Unexpected output from notmuch search: +Unrecognized option: --this-option-does-not-exist +End of search results. (process returned 1)" + test_done