mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
json: Fix search result with no matches to be a valid json object.
In the original json code, search matching nothing would return a
valid, empty json array (that is, "[]"). I broke this in commit
6dcb7592e3
when adding support for
--output=threads|messages|tags. This time, while fixing the bug also
add a test to the test suite to help avoid future regressions.
This commit is contained in:
parent
f14d4c55ce
commit
0b1ddc5f66
2 changed files with 17 additions and 16 deletions
|
@ -72,7 +72,7 @@ static const search_format_t format_text = {
|
|||
"%s", " ",
|
||||
")", "\n",
|
||||
"",
|
||||
"\n",
|
||||
"",
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -182,15 +182,15 @@ do_search_threads (const search_format_t *format,
|
|||
if (threads == NULL)
|
||||
return 1;
|
||||
|
||||
fputs (format->results_start, stdout);
|
||||
|
||||
for (;
|
||||
notmuch_threads_valid (threads);
|
||||
notmuch_threads_move_to_next (threads))
|
||||
{
|
||||
int first_tag = 1;
|
||||
|
||||
if (first_thread)
|
||||
fputs (format->results_start, stdout);
|
||||
else
|
||||
if (! first_thread)
|
||||
fputs (format->item_sep, stdout);
|
||||
|
||||
thread = notmuch_threads_get (threads);
|
||||
|
@ -236,8 +236,7 @@ do_search_threads (const search_format_t *format,
|
|||
notmuch_thread_destroy (thread);
|
||||
}
|
||||
|
||||
if (! first_thread)
|
||||
fputs (format->results_end, stdout);
|
||||
fputs (format->results_end, stdout);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -255,15 +254,15 @@ do_search_messages (const search_format_t *format,
|
|||
if (messages == NULL)
|
||||
return 1;
|
||||
|
||||
fputs (format->results_start, stdout);
|
||||
|
||||
for (;
|
||||
notmuch_messages_valid (messages);
|
||||
notmuch_messages_move_to_next (messages))
|
||||
{
|
||||
message = notmuch_messages_get (messages);
|
||||
|
||||
if (first_message)
|
||||
fputs (format->results_start, stdout);
|
||||
else
|
||||
if (! first_message)
|
||||
fputs (format->item_sep, stdout);
|
||||
|
||||
if (output == OUTPUT_FILES) {
|
||||
|
@ -281,8 +280,7 @@ do_search_messages (const search_format_t *format,
|
|||
|
||||
notmuch_messages_destroy (messages);
|
||||
|
||||
if (! first_message)
|
||||
fputs (format->results_end, stdout);
|
||||
fputs (format->results_end, stdout);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -310,15 +308,15 @@ do_search_tags (notmuch_database_t *notmuch,
|
|||
if (tags == NULL)
|
||||
return 1;
|
||||
|
||||
fputs (format->results_start, stdout);
|
||||
|
||||
for (;
|
||||
notmuch_tags_valid (tags);
|
||||
notmuch_tags_move_to_next (tags))
|
||||
{
|
||||
tag = notmuch_tags_get (tags);
|
||||
|
||||
if (first_tag)
|
||||
fputs (format->results_start, stdout);
|
||||
else
|
||||
if (! first_tag)
|
||||
fputs (format->item_sep, stdout);
|
||||
|
||||
format->item_id (tags, "", tag);
|
||||
|
@ -331,8 +329,7 @@ do_search_tags (notmuch_database_t *notmuch,
|
|||
if (messages)
|
||||
notmuch_messages_destroy (messages);
|
||||
|
||||
if (! first_tag)
|
||||
fputs (format->results_end, stdout);
|
||||
fputs (format->results_end, stdout);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -39,4 +39,8 @@ test_expect_equal "$output" "[{\"thread\": \"XXX\",
|
|||
\"subject\": \"json-search-utf8-body-sübjéct\",
|
||||
\"tags\": [\"inbox\", \"unread\"]}]"
|
||||
|
||||
test_begin_subtest "Search returning no messages"
|
||||
output=$(notmuch search --format=json "this string had better not match any messages" | notmuch_search_sanitize)
|
||||
test_expect_equal "$output" "[]"
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue