[notmuch] [PATCH 4/4] Tests for maildir-based mailstore
Michal Sojka
sojkam1 at fel.cvut.cz
Thu Mar 18 08:39:40 PDT 2010
Signed-off-by: Michal Sojka <sojkam1 at fel.cvut.cz>
---
test/t0006-maildir.sh | 113 +++++++++++++++++++++++++++++++++++++++++++++++++
test/test-lib.sh | 7 ++-
2 files changed, 118 insertions(+), 2 deletions(-)
create mode 100755 test/t0006-maildir.sh
diff --git a/test/t0006-maildir.sh b/test/t0006-maildir.sh
new file mode 100755
index 0000000..e584908
--- /dev/null
+++ b/test/t0006-maildir.sh
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+test_description="Test maildir mailstore"
+
+. ./test-lib.sh
+
+filter_output() {
+ grep -v -E -e "$NOTMUCH_IGNORED_OUTPUT_REGEXP" | sed -e "$NOTMUCH_THREAD_ID_SQUELCH"
+}
+
+filter_show() {
+ sed -e 's/, /,\n/g'|sed -e '/^"filename"/ s/:2,[A-Z]*//' -e '/^"tags"/d'
+}
+
+cat >> "$NOTMUCH_CONFIG" <<EOF
+[mailstore]
+type=maildir
+EOF
+
+test_expect_success "No new mail" '
+execute_expecting new "No new mail."
+'
+cat > expected <<EOF
+Added 1 new message to the database.
+EOF
+test_expect_success "Add a message, no flags" '
+generate_message [subject]="\"test message\"" [date]="\"Sat, 01 Jan 2000 12:00:00 -0000\"" [filename]="\"msg-001:2,\"" &&
+notmuch new | filter_output > actual &&
+test_cmp expected actual
+#emacs --eval "(gdb \"gdb --annotate=3 --args $(which notmuch) new\")"
+'
+cat > expected <<EOF
+thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test message (inbox unread)
+EOF
+test_expect_success 'Search for the message' '
+notmuch search tag:inbox and tag:unread | filter_output > actual &&
+test_cmp expected actual
+'
+cat > expected <<EOF
+No new mail. Detected 1 file rename.
+EOF
+test_expect_success 'Add seen flag' '
+mv "${gen_msg_filename}" "${gen_msg_filename}S" &&
+increment_mtime "$(dirname "${gen_msg_filename}")" &&
+notmuch new | filter_output > actual &&
+test_cmp expected actual
+'
+cat > expected <<EOF
+thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test message (inbox)
+EOF
+test_expect_success 'Check that tags were updated' '
+notmuch search tag:inbox and not tag:unread | filter_output > actual &&
+test_cmp expected actual
+'
+cat > expected <<EOF
+Added 1 new message to the database.
+EOF
+test_expect_success "Add a seen message" '
+generate_message [subject]="\"test message2\"" [date]="\"Sat, 01 Jan 2000 12:00:00 -0000\"" [filename]="\"msg-002:2,S\"" &&
+notmuch new | filter_output > actual &&
+test_cmp expected actual
+'
+cat > expected <<EOF
+thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test message (inbox)
+thread:XXX 2000-01-01 [1/1] Notmuch Test Suite; test message2 (inbox)
+EOF
+test_expect_success 'Check that the seen message is not tagged unread' '
+notmuch search tag:inbox and not tag:unread | filter_output > actual &&
+test_cmp expected actual
+'
+test_expect_success 'Tag the seen messages as replied' '
+notmuch tag +replied -inbox tag:inbox and not tag:unread
+'
+
+cat > expected <<EOF
+msg-001:2,RS
+msg-002:2,RS
+EOF
+test_expect_success 'Check that R flag was added (rename)' '
+ls -1 "${MAIL_DIR}" > actual &&
+test_cmp expected actual
+'
+echo -n '[[[{"id": "msg-001 at notmuch-test-suite",
+"match": true,
+"filename": "/home/wsh/src/notmuch/test/trash directory.t0006-maildir/mail/msg-001",
+"headers": {"Subject": "test message",
+"From": "Notmuch Test Suite <test_suite at notmuchmail.org>",
+"To": "Notmuch Test Suite <test_suite at notmuchmail.org>",
+"Cc": "",
+"Bcc": "",
+"Date": "Sat,
+01 Jan 2000 12:00:00 -0000"},
+"body": [{"id": 1,
+"content-type": "text/plain",
+"content": "This is just a test message at /home/wsh/src/notmuch/test/trash directory.t0006-maildir/mail/msg-001:2,\n"}]},
+[]]]]' > show-expected
+
+test_expect_success 'Renamed message can be shown without running notmuch new' '
+notmuch show --format=json id:msg-001 at notmuch-test-suite | filter_show > show-actual &&
+test_cmp show-expected show-actual
+'
+
+test_expect_success 'Test that we can reply to the renamed message' '
+notmuch reply id:msg-001 at notmuch-test-suite
+'
+
+echo "No new mail." > expected
+test_expect_success 'No rename should be detected by notmuch new' '
+increment_mtime "$(dirname "${gen_msg_filename}")" &&
+notmuch new > actual &&
+test_cmp expected actual
+'
+test_done
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 5417fe7..917631b 100755
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -257,8 +257,11 @@ generate_message ()
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[filename]}" ]; then
+ template[filename]="msg-$(printf "%03d" $gen_msg_cnt)"
+ fi
+ gen_msg_name=${template[filename]}
+ gen_msg_id="${gen_msg_name%:2,*}@notmuch-test-suite"
if [ -z "${template[dir]}" ]; then
gen_msg_filename="${MAIL_DIR}/$gen_msg_name"
--
1.7.0
More information about the notmuch
mailing list