From 708c4f46caae76d4366a6a8de369943a3adef443 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 10 Mar 2011 16:53:46 -0800 Subject: [PATCH] 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. --- emacs/notmuch.el | 2 ++ test/emacs-large-search-buffer | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) 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