Convert the actual tests to the new framework

The changes are:
- The notmuch-test was split into several files (t000?-*.sh).
- Removed helper functions which were moved to test-lib.sh
- Replaced every printf with test_expect_success.
- Test commands chained with && (test-lib.sh doesn't use "set -e" in
  order to complete the test suite even if something fails)
- Many variables such as ${MAIL_DIR} were properly quoted as they
  contain spaces.
- Changed quoting patterns in add_message and generate_message (single
  quotes are already used by the test framework).
- ${TEST_DIR} replaced by ${PWD}

QUICK HOWTO:

To run the whole test suite
    make

To run only a single test
   ./t0001-new.sh

To stop on the first error
   ./t0001-new.sh -i
then mail store and database can be inspected in
"trash directory.t0001-new"

To see the output of tests
   ./t0001-new.sh -v

To not remove trash directory at the end:
   ./t0001-new.sh -d

To run all tests verbosely:
   make GIT_TEST_OPTS="-v"

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
This commit is contained in:
Michal Sojka 2010-06-10 08:48:03 +02:00 committed by Carl Worth
parent 04d454f582
commit 5398e6966a
14 changed files with 1053 additions and 1189 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# #
# Copyright (c) 2005 Junio C Hamano # Copyright (c) 2005 Junio C Hamano
# #

164
test/t0001-new.sh Executable file
View file

@ -0,0 +1,164 @@
#!/bin/bash
test_description="\"notmuch new\" in several variations"
. ./test-lib.sh
test_expect_success "No new messages" '
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail."
'
test_expect_success "Single new message" '
generate_message &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Multiple new messages" '
generate_message &&
generate_message &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 2 new messages to the database."
'
test_expect_success "No new messages (non-empty DB)" '
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail."
'
test_expect_success "New directories" '
rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
mkdir "${MAIL_DIR}"/def &&
mkdir "${MAIL_DIR}"/ghi &&
generate_message [dir]=def &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Alternate inode order" '
rm -rf "${MAIL_DIR}"/.notmuch &&
mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc &&
rm "${MAIL_DIR}"/def/* &&
generate_message [dir]=abc &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Message moved in" '
rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
generate_message &&
tmp_msg_filename=tmp/"$gen_msg_filename" &&
mkdir -p "$(dirname "$tmp_msg_filename")" &&
mv "$gen_msg_filename" "$tmp_msg_filename" &&
increment_mtime "${MAIL_DIR}" &&
$NOTMUCH new > /dev/null &&
mv "$tmp_msg_filename" "$gen_msg_filename" &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Renamed message" '
generate_message &&
$NOTMUCH new > /dev/null &&
mv "$gen_msg_filename" "${gen_msg_filename}"-renamed &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail. Detected 1 file rename."
'
test_expect_success "Deleted message" '
rm "${gen_msg_filename}"-renamed &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail. Removed 1 message."
'
test_expect_success "Renamed directory" '
generate_message [dir]=dir &&
generate_message [dir]=dir &&
generate_message [dir]=dir &&
$NOTMUCH new > /dev/null &&
mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail. Detected 3 file renames."
'
test_expect_success "Deleted directory" '
rm -rf "${MAIL_DIR}"/dir-renamed &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail. Removed 3 messages."
'
test_expect_success "New directory (at end of list)" '
generate_message [dir]=zzz &&
generate_message [dir]=zzz &&
generate_message [dir]=zzz &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 3 new messages to the database."
'
test_expect_success "Deleted directory (end of list)" '
rm -rf "${MAIL_DIR}"/zzz &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail. Removed 3 messages."
'
test_expect_success "New symlink to directory" '
rm -rf "${MAIL_DIR}"/.notmuch &&
mv "${MAIL_DIR}" "$PWD"/actual_maildir &&
mkdir "${MAIL_DIR}" &&
ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "New symlink to a file" '
generate_message &&
external_msg_filename="$PWD"/external/"$(basename "$gen_msg_filename")" &&
mkdir -p "$(dirname "$external_msg_filename")" &&
mv "$gen_msg_filename" "$external_msg_filename" &&
ln -s "$external_msg_filename" "$gen_msg_filename" &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "New two-level directory" '
generate_message [dir]=two/levels &&
generate_message [dir]=two/levels &&
generate_message [dir]=two/levels &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 3 new messages to the database."
'
test_expect_success "Deleted two-level directory" '
rm -rf "${MAIL_DIR}"/two &&
increment_mtime "${MAIL_DIR}" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "No new mail. Removed 3 messages."
'
test_done

111
test/t0002-search.sh Executable file
View file

@ -0,0 +1,111 @@
#!/bin/bash
test_description="\"notmuch search\" in several variations"
. ./test-lib.sh
test_expect_success "Search body" '
add_message "[subject]=\"body search\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [body]=bodysearchtest &&
output=$($NOTMUCH search bodysearchtest | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)"
'
test_expect_success "Search by from:" '
add_message "[subject]=\"search by from\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [from]=searchbyfrom &&
output=$($NOTMUCH search from:searchbyfrom | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)"
'
test_expect_success "Search by to:" '
add_message "[subject]=\"search by to\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [to]=searchbyto &&
output=$($NOTMUCH search to:searchbyto | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)"
'
test_expect_success "Search by subject:" '
add_message [subject]=subjectsearchtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$($NOTMUCH search subject:subjectsearchtest | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)"
'
test_expect_success "Search by id:" '
add_message "[subject]=\"search by id\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$($NOTMUCH search id:${gen_msg_id} | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)"
'
test_expect_success "Search by tag:" '
add_message "[subject]=\"search by tag\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
$NOTMUCH tag +searchbytag id:${gen_msg_id} &&
output=$($NOTMUCH search tag:searchbytag | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)"
'
test_expect_success "Search by thread:" '
add_message "[subject]=\"search by thread\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
thread_id=$($NOTMUCH search id:${gen_msg_id} | sed -e "s/thread:\([a-f0-9]*\).*/\1/") &&
output=$($NOTMUCH search thread:${thread_id} | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)"
'
test_expect_success "Search body (phrase)" '
add_message "[subject]=\"body search (phrase)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"body search (phrase)\"" &&
add_message "[subject]=\"negative result\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"This phrase should not match the body search\"" &&
output=$($NOTMUCH search "\"body search (phrase)\"" | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; body search (phrase) (inbox unread)"
'
test_expect_success "Search by from: (address)" '
add_message "[subject]=\"search by from (address)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [from]=searchbyfrom@example.com &&
output=$($NOTMUCH search from:searchbyfrom@example.com | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] searchbyfrom@example.com; search by from (address) (inbox unread)"
'
test_expect_success "Search by from: (name)" '
add_message "[subject]=\"search by from (name)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[from]=\"Search By From Name <test@example.com>\"" &&
output=$($NOTMUCH search from:"Search By From Name" | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Search By From Name; search by from (name) (inbox unread)"
'
test_expect_success "Search by to: (address)" '
add_message "[subject]=\"search by to (address)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [to]=searchbyto@example.com &&
output=$($NOTMUCH search to:searchbyto@example.com | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (address) (inbox unread)"
'
test_expect_success "Search by to: (name)" '
add_message "[subject]=\"search by to (name)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[to]=\"Search By To Name <test@example.com>\"" &&
output=$($NOTMUCH search to:"Search By To Name" | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unread)"
'
test_expect_success "Search by subject: (phrase)" '
add_message "[subject]=\"subject search test (phrase)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
add_message "[subject]=\"this phrase should not match the subject search test\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$($NOTMUCH search "subject:\"subject search test (phrase)\"" | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; subject search test (phrase) (inbox unread)"
'
test_expect_success "Search for all messages (\"*\"):" '
output=$($NOTMUCH search "*" | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)
thread:XXX 2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; body search (phrase) (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; negative result (inbox unread)
thread:XXX 2000-01-01 [1/1] searchbyfrom@example.com; search by from (address) (inbox unread)
thread:XXX 2000-01-01 [1/1] Search By From Name; search by from (name) (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (address) (inbox unread)
thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unread)
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)"
'
test_expect_success "Search body (utf-8):" '
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)"
'
test_done

46
test/t0003-json.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
test_description="--format=json output"
. ./test-lib.sh
test_expect_success "Show message: json" '
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 <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Cc\": \"\", \"Bcc\": \"\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 -0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
'
test_expect_success "Search message: json" '
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\"]}]"
'
test_expect_success "Search by subject (utf-8):" '
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)"
'
test_expect_success "Show message: json, utf-8" '
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 <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"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\"}]}, []]]]"
'
test_expect_success "Search message: json, utf-8" '
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\"]}]"
'
test_done

191
test/t0004-thread-naming.sh Executable file
View file

@ -0,0 +1,191 @@
#!/bin/bash
test_description="naming of threads with changing subject"
. ./test-lib.sh
test_expect_success 'Generate some messages' '
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\"" \
"[in-reply-to]=\<$parent\>" &&
add_message "[subject]=\"thread-naming: Newer changed subject\"" \
"[date]=\"Sun, 07 Jan 2001 15:43:56 -0800\"" \
"[in-reply-to]=\<$parent\>" &&
add_message "[subject]=\"thread-naming: Final thread subject\"" \
"[date]=\"Mon, 08 Jan 2001 15:43:56 -0800\"" \
"[in-reply-to]=\<$parent\>" &&
final=${gen_msg_id}
'
test_expect_success "Initial thread name (oldest-first search)" '
output=$($NOTMUCH search --sort=oldest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-05 [4/4] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"
'
test_expect_success "Initial thread name (newest-first search)" '
output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-08 [4/4] Notmuch Test Suite; thread-naming: Final thread subject (inbox unread)"
# Remove oldest and newest messages from search results
$NOTMUCH tag -inbox id:$parent or id:$final
'
test_expect_success "Changed thread name (oldest-first search)" '
output=$($NOTMUCH search --sort=oldest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-06 [2/4] Notmuch Test Suite; thread-naming: Older changed subject (inbox unread)"
'
test_expect_success "Changed thread name (newest-first search)" '
output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-07 [2/4] Notmuch Test Suite; thread-naming: Newer changed subject (inbox unread)"
'
test_expect_success "Ignore added reply prefix (Re:)" '
add_message "[subject]=\"Re: thread-naming: Initial thread subject\"" \
"[date]=\"Tue, 09 Jan 2001 15:43:45 -0800\"" \
"[in-reply-to]=\<$parent\>" &&
output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-09 [3/5] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"
'
test_expect_success "Ignore added reply prefix (Aw:)" '
add_message "[subject]=\"Aw: thread-naming: Initial thread subject\"" \
"[date]=\"Wed, 10 Jan 2001 15:43:45 -0800\"" \
"[in-reply-to]=\<$parent\>" &&
output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-10 [4/6] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"
'
test_expect_success "Ignore added reply prefix (Vs:)" '
add_message "[subject]=\"Vs: thread-naming: Initial thread subject\"" \
"[date]=\"Thu, 11 Jan 2001 15:43:45 -0800\"" \
"[in-reply-to]=\<$parent\>" &&
output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-11 [5/7] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"
'
test_expect_success "Ignore added reply prefix (Sv:)" '
add_message "[subject]=\"Sv: thread-naming: Initial thread subject\"" \
"[date]=\"Fri, 12 Jan 2001 15:43:45 -0800\"" \
"[in-reply-to]=\<$parent\>" &&
output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-12 [6/8] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"
'
test_expect_success "Test order of messages in \"notmuch show\"" '
output=$($NOTMUCH show thread-naming | notmuch_show_sanitize) &&
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 <test_suite@notmuchmail.org> (2001-01-05) (unread)
Subject: thread-naming: Initial thread subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:56 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$first)
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-06) (inbox unread)
Subject: thread-naming: Older changed subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Sat, 06 Jan 2001 15:43:56 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 1)))
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-07) (inbox unread)
Subject: thread-naming: Newer changed subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Sun, 07 Jan 2001 15:43:56 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 2)))
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-08) (unread)
Subject: thread-naming: Final thread subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Mon, 08 Jan 2001 15:43:56 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 3)))
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-09) (inbox unread)
Subject: Re: thread-naming: Initial thread subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Tue, 09 Jan 2001 15:43:45 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 4)))
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-10) (inbox unread)
Subject: Aw: thread-naming: Initial thread subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Wed, 10 Jan 2001 15:43:45 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 5)))
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-11) (inbox unread)
Subject: Vs: thread-naming: Initial thread subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Thu, 11 Jan 2001 15:43:45 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 6)))
part}
body}
message}
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 <test_suite@notmuchmail.org> (2001-01-12) (inbox unread)
Subject: Sv: thread-naming: Initial thread subject
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 12 Jan 2001 15:43:45 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
This is just a test message (#$((first + 7)))
part}
body}
message}"
'
test_done

137
test/t0005-reply.sh Executable file
View file

@ -0,0 +1,137 @@
#!/bin/bash
test_description="\"notmuch reply\" in several variations"
. ./test-lib.sh
test_expect_success "Basic reply" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[to]=test_suite@notmuchmail.org \
[subject]=notmuch-reply-test \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"basic reply test\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>
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 <sender@example.com> wrote:
> basic reply test"
'
test_expect_success "Multiple recipients" '
add_message "[from]=\"Sender <sender@example.com>\"" \
"[to]=\"test_suite@notmuchmail.org, Someone Else <someone@example.com>\"" \
[subject]=notmuch-reply-test \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"Multiple recipients\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, Someone Else <someone@example.com>
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 <sender@example.com> wrote:
> Multiple recipients"
'
test_expect_success "Reply with CC" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[to]=test_suite@notmuchmail.org \
"[cc]=\"Other Parties <cc@example.com>\"" \
[subject]=notmuch-reply-test \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"reply with CC\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>
Cc: Other Parties <cc@example.com>
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 <sender@example.com> wrote:
> reply with CC"
'
test_expect_success "Reply from alternate address" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[to]=test_suite_other@notmuchmail.org \
[subject]=notmuch-reply-test \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"reply from alternate address\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>
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 <sender@example.com> wrote:
> reply from alternate address"
'
test_expect_success "Support for Reply-To" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[to]=test_suite@notmuchmail.org \
[subject]=notmuch-reply-test \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"support for reply-to\"" \
"[reply-to]=\"Sender <elsewhere@example.com>\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <elsewhere@example.com>
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 <sender@example.com> wrote:
> support for reply-to"
'
test_expect_success "Un-munging Reply-To" '
add_message "[from]=\"Sender <sender@example.com>\"" \
"[to]=\"Some List <list@example.com>\"" \
[subject]=notmuch-reply-test \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"Un-munging Reply-To\"" \
"[reply-to]=\"Evil Munging List <list@example.com>\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, Some List <list@example.com>
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 <sender@example.com> wrote:
> Un-munging Reply-To"
'
test_expect_success "Message with header of exactly 200 bytes" '
add_message "[subject]=\"This subject is exactly 200 bytes in length. Other than its length there is not much of note here. Note that the length of 200 bytes includes the Subject: and Re: prefixes with two spaces\"" \
"[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \
"[body]=\"200-byte header\"" &&
output=$($NOTMUCH reply id:${gen_msg_id}) &&
pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: This subject is exactly 200 bytes in length. Other than its length there is not much of note here. Note that the length of 200 bytes includes the Subject: and Re: prefixes with two spaces
Bcc: test_suite@notmuchmail.org
In-Reply-To: <${gen_msg_id}>
References: <${gen_msg_id}>
On Tue, 05 Jan 2010 15:43:56 -0800, Notmuch Test Suite <test_suite@notmuchmail.org> wrote:
> 200-byte header"
'
test_done

30
test/t0006-dump-restore.sh Executable file
View file

@ -0,0 +1,30 @@
#!/bin/bash
test_description="\"notmuch dump\" and \"notmuch restore\""
. ./test-lib.sh
test_expect_success 'Generate some message' '
generate_message &&
notmuch new
'
test_expect_success "Dumping all tags" '
$NOTMUCH dump dump.expected &&
pass_if_equal "$?" "0"
'
test_expect_success "Clearing all tags" '
sed -e "s/(\([^(]*\))$/()/" < dump.expected > clear.expected
$NOTMUCH restore clear.expected &&
$NOTMUCH dump clear.actual &&
pass_if_equal "$(< clear.actual)" "$(< clear.expected)"
'
test_expect_success "Restoring original tags" '
$NOTMUCH restore dump.expected &&
$NOTMUCH dump dump.actual &&
pass_if_equal "$(< dump.actual)" "$(< dump.expected)"
'
test_expect_success "Restore with nothing to do" '
$NOTMUCH restore dump.expected &&
pass_if_equal "$?" "0"
'
test_done

36
test/t0007-uuencode.sh Executable file
View file

@ -0,0 +1,36 @@
#!/bin/bash
test_description="handling of uuencoded data"
. ./test-lib.sh
test_expect_success 'Generate message' '
add_message [subject]=uuencodetest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
"[body]=\"This message is used to ensure that notmuch correctly handles a
message containing a block of uuencoded data. First, we have a marker
this content beforeuudata . Then we beging the uunencoded data itself:
begin 644 bogus-uuencoded-data
M0123456789012345678901234567890123456789012345678901234567890
MOBVIOUSLY, THIS IS NOT ANY SORT OF USEFUL UUNECODED DATA.
MINSTEAD THIS IS JUST A WAY TO ENSURE THAT THIS BLOCK OF DATA
MIS CORRECTLY IGNORED WHEN NOTMUCH CREATES ITS INDEX. SO WE
MINCLUDE A DURINGUUDATA MARKER THAT SHOULD NOT RESULT IN ANY
MSEARCH RESULT.
\\\`
end
Finally, we have our afteruudata marker as well.\""
'
test_expect_success "Ensure content before uu data is indexed" '
output=$($NOTMUCH search beforeuudata | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; uuencodetest (inbox unread)"
'
test_expect_success "Ensure uu data is not indexed" '
output=$($NOTMUCH search DURINGUUDATA | notmuch_search_sanitize) &&
pass_if_equal "$output" ""
'
test_expect_success "Ensure content after uu data is indexed" '
output=$($NOTMUCH search afteruudata | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; uuencodetest (inbox unread)"
'
test_done

View file

@ -0,0 +1,31 @@
#!/bin/bash
test_description="threading when messages received out of order"
. ./test-lib.sh
test_expect_success "Adding initial child message" '
generate_message [body]=foo "[in-reply-to]=\<parent-id\>" [subject]=brokenthreadtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Searching returns the message" '
output=$($NOTMUCH search foo | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; brokenthreadtest (inbox unread)"
'
test_expect_success "Adding second child message" '
generate_message [body]=foo "[in-reply-to]=\<parent-id\>" [subject]=brokenthreadtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Searching returns both messages in one thread" '
output=$($NOTMUCH search foo | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2000-01-01 [2/2] Notmuch Test Suite; brokenthreadtest (inbox unread)"
'
test_expect_success "Adding parent message" '
generate_message [body]=foo [id]=parent-id [subject]=brokenthreadtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "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)"
'
test_done

35
test/t0009-author-reordering.sh Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
test_description="author reordering;"
. ./test-lib.sh
test_expect_success "Adding parent message" '
generate_message [body]=findme [id]=new-parent-id [subject]=author-reorder-threadtest "[from]=\"User <user@example.com>\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Adding initial child message" '
generate_message [body]=findme "[in-reply-to]=\<new-parent-id\>" [subject]=author-reorder-threadtest "[from]=\"User1 <user1@example.com>\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Adding second child message" '
generate_message [body]=findme "[in-reply-to]=\<new-parent-id\>" [subject]=author-reorder-threadtest "[from]=\"User2 <user2@example.com>\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Searching when all three messages match" '
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)"
'
test_expect_success "Searching when two messages match" '
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)"
'
test_expect_success "Searching when only one message matches" '
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)"
'
test_expect_success "Searching when only first message matches" '
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)"
'
test_done

View file

@ -0,0 +1,215 @@
#!/bin/bash
test_description="From line heuristics (with multiple configured addresses)"
. ./test-lib.sh
test_expect_success "Magic from guessing (nothing to go on)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (Envelope-to:)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite_other@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (X-Original-To:)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite_other@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (Received: .. for ..)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite_other@notmuchmail.org>; 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 <test_suite_other@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (Received: domain)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite@otherdomain.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Testing From line heuristics (with single configured address)" '
sed -i -e "s/^other_email.*//" "${NOTMUCH_CONFIG}"
'
test_expect_success "Magic from guessing (nothing to go on)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (Envelope-to:)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (X-Original-To:)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (Received: .. for ..)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite_other@notmuchmail.org>; 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 <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_expect_success "Magic from guessing (Received: domain)" '
add_message "[from]=\"Sender <sender@example.com>\"" \
[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 <test_suite@notmuchmail.org>
Subject: Re: notmuch-reply-test
To: Sender <sender@example.com>, 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 <sender@example.com> wrote:
> from guessing test"
'
test_done

29
test/t0011-long-msgid.sh Executable file
View file

@ -0,0 +1,29 @@
#!/bin/bash
test_description="Testing messages with ridiculously-long message IDs"
. ./test-lib.sh
test_expect_success "Referencing long ID before adding" '
generate_message "[subject]=\"Reference of ridiculously-long message ID\"" \
"[references]=\<abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-\>" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Adding message with long ID" '
generate_message "[subject]=\"A ridiculously-long message ID\"" \
"[id]=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Referencing long ID after adding" '
generate_message "[subject]=\"Reply to ridiculously-long message ID\"" \
"[in-reply-to]=\<abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-\>" &&
output=$(NOTMUCH_NEW) &&
pass_if_equal "$output" "Added 1 new message to the database."
'
test_expect_success "Ensure all messages were threaded together" '
output=$($NOTMUCH search "subject:\"a ridiculously-long message ID\"" | notmuch_search_sanitize) &&
pass_if_equal "$output" "thread:XXX 2001-01-05 [1/3] Notmuch Test Suite; A ridiculously-long message ID (inbox unread)"
'
test_done

25
test/t0012-encoding-issues.sh Executable file
View file

@ -0,0 +1,25 @@
#!/bin/bash
test_description="Testing encoding issues"
. ./test-lib.sh
test_expect_success "Message with text of unknown charset" '
add_message "[content-type]=\"text/plain; charset=unknown-8bit\"" \
"[body]=irrelevant" &&
output=$($NOTMUCH show id:${gen_msg_id} 2>&1 | notmuch_show_sanitize) &&
pass_if_equal "$output" " message{ id:msg-001@notmuch-test-suite depth:0 match:1 filename:/XXX/mail/msg-001
header{
Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox unread)
Subject: Test message #1
From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Tue, 05 Jan 2001 15:43:57 -0800
header}
body{
part{ ID: 1, Content-type: text/plain
irrelevant
part}
body}
message}"
'
test_done