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 <cworth@cworth.org>: 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).
This commit is contained in:
James Westby 2010-03-13 16:27:57 -05:00 committed by Carl Worth
parent e1bc5fc9c7
commit 4a9b41f1da

View file

@ -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]=<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]=\<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 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]=\<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 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 <<EOF
Notmuch test suite complete.