X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=test%2Fnotmuch-test;h=e1ff55d16bd0dfd4fc7ed41b8eeaa0bcbfe5884f;hb=ddce8438a086fdc79d72f5b9fae364199d33c6bd;hp=1956001254dad125cafdfd6b7460a11d1eaf71e8;hpb=5106df9f6b3101eb1ea4250efefa3f0408acbfc6;p=notmuch diff --git a/test/notmuch-test b/test/notmuch-test index 19560012..e1ff55d1 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -1,6 +1,12 @@ #!/bin/bash set -e +# Messages contain time/date values with time zone and notmuch +# displays them converted to the local time zone. We need to set fixed +# timezone here so that the output of the tests is always the same +# without regard to the time zone of where the test suite is run. +export TZ=UTC+8 + find_notmuch_binary () { dir=$1 @@ -60,6 +66,7 @@ increment_mtime () # '[cc]="Some User "' # [reply-to]=some-address # [in-reply-to]= +# '[header]=full header line, including keyword' # # Additional values for email headers. If these are not provided # then the relevant headers will simply not appear in the @@ -114,6 +121,11 @@ generate_message () fi additional_headers="" + if [ ! -z "${template[header]}" ]; then + additional_headers="${template[header]} +${additional_headers}" + fi + if [ ! -z "${template[reply-to]}" ]; then additional_headers="Reply-To: ${template[reply-to]} ${additional_headers}" @@ -129,6 +141,7 @@ ${additional_headers}" ${additional_headers}" fi + cat <$gen_msg_filename From: ${template[from]} To: ${template[to]} @@ -186,10 +199,9 @@ NOTMUCH_NEW () $NOTMUCH new | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file' } -NOTMUCH_SEARCH_THREAD_ID_SQUELCH='s/thread:................/thread:XXX/' notmuch_search_sanitize () { - sed -e "$NOTMUCH_SEARCH_THREAD_ID_SQUELCH" + sed -r -e 's/("?thread"?: ?)("?)................("?)/\1\2XXX\3/' } NOTMUCH_SHOW_FILENAME_SQUELCH='s,filename:.*/mail,filename:/XXX/mail,' @@ -211,7 +223,7 @@ path=${MAIL_DIR} [user] name=Notmuch Test Suite primary_email=test_suite@notmuchmail.org -other_email=test_suite_other@notmuchmail.org +other_email=test_suite_other@notmuchmail.org;test_suite@otherdomain.org EOF printf "Testing \"notmuch new\" in several variations:\n" @@ -450,9 +462,54 @@ thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unr thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; subject search test (phrase) (inbox unread) thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; this phrase should not match the subject search test (inbox unread)" +printf " Search body (utf-8):...\t\t\t" +add_message '[subject]="utf8-message-body-subject"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="message body utf8: bödý"' +output=$($NOTMUCH search 'bödý' | notmuch_search_sanitize) +pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; utf8-message-body-subject (inbox unread)" + +printf "\nTesting --format=json output:\n" + +printf " Show message: json...\t\t\t\t" +add_message '[subject]="json-show-subject"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="json-show-message"' +output=$($NOTMUCH show --format=json 'json-show-message') +pass_if_equal "$output" '[[[{"id": "'${gen_msg_id}'", "match": true, "filename": "'${gen_msg_filename}'", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","unread"], "headers": {"Subject": "json-show-subject", "From": "Notmuch Test Suite ", "To": "Notmuch Test Suite ", "Cc": "", "Bcc": "", "Date": "Sat, 01 Jan 2000 12:00:00 -0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "json-show-message\n"}]}, []]]]' + +printf " Search message: json...\t\t\t" +add_message '[subject]="json-search-subject"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="json-search-message"' +output=$($NOTMUCH search --format=json 'json-search-message' | notmuch_search_sanitize) +pass_if_equal "$output" '[{"thread": "XXX", +"timestamp": 946728000, +"matched": 1, +"total": 1, +"authors": "Notmuch Test Suite", +"subject": "json-search-subject", +"tags": ["inbox", "unread"]}]' + +printf " Search by subject (utf-8):...\t\t\t" +add_message [subject]=utf8-sübjéct '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +output=$($NOTMUCH search subject:utf8-sübjéct | notmuch_search_sanitize) +pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; utf8-sübjéct (inbox unread)" + +printf " Show message: json, utf-8...\t\t\t" +add_message '[subject]="json-show-utf8-body-sübjéct"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="jsön-show-méssage"' +output=$($NOTMUCH show --format=json 'jsön-show-méssage') +pass_if_equal "$output" '[[[{"id": "'${gen_msg_id}'", "match": true, "filename": "'${gen_msg_filename}'", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","unread"], "headers": {"Subject": "json-show-utf8-body-sübjéct", "From": "Notmuch Test Suite ", "To": "Notmuch Test Suite ", "Cc": "", "Bcc": "", "Date": "Sat, 01 Jan 2000 12:00:00 -0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "jsön-show-méssage\n"}]}, []]]]' + +printf " Search message: json, utf-8...\t\t\t" +add_message '[subject]="json-search-utf8-body-sübjéct"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="jsön-search-méssage"' +output=$($NOTMUCH search --format=json 'jsön-search-méssage' | notmuch_search_sanitize) +pass_if_equal "$output" '[{"thread": "XXX", +"timestamp": 946728000, +"matched": 1, +"total": 1, +"authors": "Notmuch Test Suite", +"subject": "json-search-utf8-body-sübjéct", +"tags": ["inbox", "unread"]}]' + printf "\nTesting naming of threads with changing subject:\n" add_message '[subject]="thread-naming: Initial thread subject"' \ '[date]="Fri, 05 Jan 2001 15:43:56 -0800"' +first=${gen_msg_cnt} parent=${gen_msg_id} add_message '[subject]="thread-naming: Older changed subject"' \ '[date]="Sat, 06 Jan 2001 15:43:56 -0800"' \ @@ -514,7 +571,7 @@ pass_if_equal "$output" "thread:XXX 2001-01-12 [6/8] Notmuch Test Suite; threa printf " Test order of messages in \"notmuch show\"\t" output=$($NOTMUCH show thread-naming | notmuch_show_sanitize) -pass_if_equal "$output" " message{ id:msg-033@notmuch-test-suite depth:0 match:1 filename:/XXX/mail/msg-033 +pass_if_equal "$output" " message{ id:msg-$(printf "%03d" $first)@notmuch-test-suite depth:0 match:1 filename:/XXX/mail/msg-$(printf "%03d" $first) header{ Notmuch Test Suite (2001-01-05) (unread) Subject: thread-naming: Initial thread subject @@ -524,11 +581,11 @@ Date: Fri, 05 Jan 2001 15:43:56 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#33) +This is just a test message (#$first) part} body} message} - message{ id:msg-034@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-034 + message{ id:msg-$(printf "%03d" $((first + 1)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 1))) header{ Notmuch Test Suite (2001-01-06) (inbox unread) Subject: thread-naming: Older changed subject @@ -538,11 +595,11 @@ Date: Sat, 06 Jan 2001 15:43:56 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#34) +This is just a test message (#$((first + 1))) part} body} message} - message{ id:msg-035@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-035 + message{ id:msg-$(printf "%03d" $((first + 2)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 2))) header{ Notmuch Test Suite (2001-01-07) (inbox unread) Subject: thread-naming: Newer changed subject @@ -552,11 +609,11 @@ Date: Sun, 07 Jan 2001 15:43:56 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#35) +This is just a test message (#$((first + 2))) part} body} message} - message{ id:msg-036@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-036 + message{ id:msg-$(printf "%03d" $((first + 3)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 3))) header{ Notmuch Test Suite (2001-01-08) (unread) Subject: thread-naming: Final thread subject @@ -566,11 +623,11 @@ Date: Mon, 08 Jan 2001 15:43:56 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#36) +This is just a test message (#$((first + 3))) part} body} message} - message{ id:msg-037@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-037 + message{ id:msg-$(printf "%03d" $((first + 4)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 4))) header{ Notmuch Test Suite (2001-01-09) (inbox unread) Subject: Re: thread-naming: Initial thread subject @@ -580,11 +637,11 @@ Date: Tue, 09 Jan 2001 15:43:45 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#37) +This is just a test message (#$((first + 4))) part} body} message} - message{ id:msg-038@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-038 + message{ id:msg-$(printf "%03d" $((first + 5)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 5))) header{ Notmuch Test Suite (2001-01-10) (inbox unread) Subject: Aw: thread-naming: Initial thread subject @@ -594,11 +651,11 @@ Date: Wed, 10 Jan 2001 15:43:45 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#38) +This is just a test message (#$((first + 5))) part} body} message} - message{ id:msg-039@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-039 + message{ id:msg-$(printf "%03d" $((first + 6)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 6))) header{ Notmuch Test Suite (2001-01-11) (inbox unread) Subject: Vs: thread-naming: Initial thread subject @@ -608,11 +665,11 @@ Date: Thu, 11 Jan 2001 15:43:45 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#39) +This is just a test message (#$((first + 6))) part} body} message} - message{ id:msg-040@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-040 + message{ id:msg-$(printf "%03d" $((first + 7)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 7))) header{ Notmuch Test Suite (2001-01-12) (inbox unread) Subject: Sv: thread-naming: Initial thread subject @@ -622,7 +679,7 @@ Date: Fri, 12 Jan 2001 15:43:45 -0800 header} body{ part{ ID: 1, Content-type: text/plain -This is just a test message (#40) +This is just a test message (#$((first + 7))) part} body} message}" @@ -814,6 +871,131 @@ printf " Searching returns all three messages in one thread..." output=$($NOTMUCH search foo | notmuch_search_sanitize) pass_if_equal "$output" "thread:XXX 2000-01-01 [3/3] Notmuch Test Suite; brokenthreadtest (inbox unread)" +printf "\nTesting author reordering;\n" +printf " Adding parent message...\t\t\t" +generate_message [body]=findme [id]=new-parent-id [subject]=author-reorder-threadtest '[from]="User "' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +output=$(NOTMUCH_NEW) +pass_if_equal "$output" "Added 1 new message to the database." +printf " Adding initial child message...\t\t" +generate_message [body]=findme '[in-reply-to]=\' [subject]=author-reorder-threadtest '[from]="User1 "' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +output=$(NOTMUCH_NEW) +pass_if_equal "$output" "Added 1 new message to the database." +printf " Adding second child message...\t\t\t" +generate_message [body]=findme '[in-reply-to]=\' [subject]=author-reorder-threadtest '[from]="User2 "' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +output=$(NOTMUCH_NEW) +pass_if_equal "$output" "Added 1 new message to the database." +printf " Searching when all three messages match...\t" +output=$($NOTMUCH search findme | notmuch_search_sanitize) +pass_if_equal "$output" "thread:XXX 2000-01-01 [3/3] User, User1, User2; author-reorder-threadtest (inbox unread)" +printf " Searching when two messages match...\t\t" +output=$($NOTMUCH search User1 or User2 | notmuch_search_sanitize) +pass_if_equal "$output" "thread:XXX 2000-01-01 [2/3] User1, User2| User; author-reorder-threadtest (inbox unread)" +printf " Searching when only one message matches...\t" +output=$($NOTMUCH search User2 | notmuch_search_sanitize) +pass_if_equal "$output" "thread:XXX 2000-01-01 [1/3] User2| User, User1; author-reorder-threadtest (inbox unread)" +printf " Searching when only first message matches...\t" +output=$($NOTMUCH search User | notmuch_search_sanitize) +pass_if_equal "$output" "thread:XXX 2000-01-01 [1/3] User| User1, User2; author-reorder-threadtest (inbox unread)" + +printf "\nTesting From line heuristics;\n" +printf " Magic from guessing (nothing to go on)...\t" +add_message '[from]="Sender "' \ + [to]=mailinglist@notmuchmail.org \ + [subject]=notmuch-reply-test \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \ + '[body]="from guessing test"' + +output=$($NOTMUCH reply id:${gen_msg_id}) +pass_if_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , mailinglist@notmuchmail.org +Bcc: test_suite@notmuchmail.org +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0800, Sender wrote: +> from guessing test" + +printf " Magic from guessing (Envelope-to:)...\t\t" +add_message '[from]="Sender "' \ + [to]=mailinglist@notmuchmail.org \ + [subject]=notmuch-reply-test \ + '[header]="Envelope-To: test_suite_other@notmuchmail.org"' \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \ + '[body]="from guessing test"' + +output=$($NOTMUCH reply id:${gen_msg_id}) +pass_if_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , mailinglist@notmuchmail.org +Bcc: test_suite@notmuchmail.org +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0800, Sender wrote: +> from guessing test" + +printf " Magic from guessing (X-Original-To:)...\t" +add_message '[from]="Sender "' \ + [to]=mailinglist@notmuchmail.org \ + [subject]=notmuch-reply-test \ + '[header]="X-Original-To: test_suite_other@notmuchmail.org"' \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \ + '[body]="from guessing test"' + +output=$($NOTMUCH reply id:${gen_msg_id}) +pass_if_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , mailinglist@notmuchmail.org +Bcc: test_suite@notmuchmail.org +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0800, Sender wrote: +> from guessing test" + +printf " Magic from guessing (Received: .. for ..)...\t" +add_message '[from]="Sender "' \ + [to]=mailinglist@notmuchmail.org \ + [subject]=notmuch-reply-test \ + '[header]="Received: from mail.example.com (mail.example.com [1.1.1.1])\ + by mail.notmuchmail.org (some MTA) with ESMTP id 12345678\ + for ; Sat, 10 Apr 2010 07:54:51 -0400 (EDT)"' \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \ + '[body]="from guessing test"' + +output=$($NOTMUCH reply id:${gen_msg_id}) +pass_if_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , mailinglist@notmuchmail.org +Bcc: test_suite@notmuchmail.org +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0800, Sender wrote: +> from guessing test" + +printf " Magic from guessing (Received: domain)...\t" +add_message '[from]="Sender "' \ + [to]=mailinglist@notmuchmail.org \ + [subject]=notmuch-reply-test \ + '[header]="Received: from mail.example.com (mail.example.com [1.1.1.1])\ + by mail.otherdomain.org (some MTA) with ESMTP id 12345678\ + Sat, 10 Apr 2010 07:54:51 -0400 (EDT)"' \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \ + '[body]="from guessing test"' + +output=$($NOTMUCH reply id:${gen_msg_id}) +pass_if_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , mailinglist@notmuchmail.org +Bcc: test_suite@notmuchmail.org +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0800, Sender wrote: +> from guessing test" + echo "" echo "Notmuch test suite complete."