From 4a9b41f1da63039a17a62a49dd1649bcf1ca5a99 Mon Sep 17 00:00:00 2001 From: James Westby Date: Sat, 13 Mar 2010 16:27:57 -0500 Subject: [PATCH] test: Add new tests for out-of-order messages. These new tests demonstrate a bug as follows: Multiple messages are added to the database All of these message references a common parent The parent message does not exist in the databas In this scenario, the messages will not be recognized as belonging to the same thread. We consider this a bug, and the new tests treat this as a failure. Edited by Carl Worth : Split these tests into their own commit (before the fix of the bug). This lets me see the actual failure in the test suite, before the fix is applied. Also fix the alignment of new messages from test suite, (so that the PASS portions all line up---which is important while we're still manually verifying test-suite results). --- test/notmuch-test | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/test/notmuch-test b/test/notmuch-test index 1c5191b6..6d14e71d 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -64,6 +64,10 @@ increment_mtime () # Additional values for email headers. If these are not provided # then the relevant headers will simply not appear in the # message. +# +# '[id]=' +# +# Controls the message-id of the created message. gen_msg_cnt=0 gen_msg_filename="" gen_msg_id="" @@ -73,9 +77,14 @@ generate_message () local -A template="($@)" local additional_headers - gen_msg_cnt=$((gen_msg_cnt + 1)) - gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt) - gen_msg_id="${gen_msg_name}@notmuch-test-suite" + if [ -z "${template[id]}" ]; then + gen_msg_cnt=$((gen_msg_cnt + 1)) + gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt) + gen_msg_id="${gen_msg_name}@notmuch-test-suite" + else + gen_msg_name="msg-${template[id]}" + gen_msg_id="${template[id]}" + fi if [ -z "${template[dir]}" ]; then gen_msg_filename="${MAIL_DIR}/$gen_msg_name" @@ -536,6 +545,23 @@ printf " Restore with nothing to do...\t" $NOTMUCH restore dump.expected echo " PASS" +printf "\nTesting threading when messages received out of order:\n" +printf " Adding initial child message...\t\t" +generate_message [body]=foo '[in-reply-to]=\' [subject]=brokenthreadtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +execute_expecting new "Added 1 new message to the database." +printf " Searching returns the message...\t\t" +execute_expecting "search foo" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; brokenthreadtest (inbox unread)" +printf " Adding second child message...\t\t\t" +generate_message [body]=foo '[in-reply-to]=\' [subject]=brokenthreadtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +execute_expecting new "Added 1 new message to the database." +printf " Searching returns both messages in one thread..." +execute_expecting "search foo" "thread:XXX 2000-01-01 [2/2] Notmuch Test Suite; brokenthreadtest (inbox unread)" +printf " Adding parent message...\t\t\t" +generate_message [body]=foo [id]=parent-id [subject]=brokenthreadtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' +execute_expecting new "Added 1 new message to the database." +printf " Searching returns all three messages in one thread..." +execute_expecting "search foo" "thread:XXX 2000-01-01 [3/3] Notmuch Test Suite; brokenthreadtest (inbox unread)" + cat <