diff --git a/test/maildir-sync b/test/maildir-sync new file mode 100755 index 00000000..23d612e7 --- /dev/null +++ b/test/maildir-sync @@ -0,0 +1,231 @@ +#!/bin/bash + +test_description="Test maildir synchronization" + +. ./test-lib.sh + +filter_show() { + sed -e 's/, /,\n/g'|sed -e "s|${MAIL_DIR}/||" -e '/^"tags"/d' + echo +} + +cat >> "$NOTMUCH_CONFIG" < expected < actual && +test_cmp expected actual +#emacs --eval "(gdb \"gdb --annotate=3 --args $(which notmuch) new\")" +' +cat > expected < actual && +test_cmp expected actual +' +cat > expected < actual && +test_cmp expected actual +' +cat > expected < actual && +test_cmp expected actual +' +cat > expected < actual && +test_cmp expected actual +' +cat > expected < 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 < actual && +test_cmp expected actual +' +cat < show-expected +[[[{"id": "msg-001@notmuch-test-suite", +"match": true, +"filename": "msg-001:2,RS", +"timestamp": 946728000, +"date_relative": "2000-01-01", +"headers": {"Subject": "test message", +"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": "This is just a test message (#1)\n"}]}, +[]]]] +EOF + +test_expect_success 'Message renamed due to changed flags can be shown without running notmuch new' ' +notmuch show --format=json id:msg-001@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@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_expect_success "Add a message to new/ without info" ' +generate_message [subject]="\"test message 3\"" [date]="\"Sat, 01 Jan 2000 12:00:00 -0000\"" [dir]=new && +NOTMUCH_NEW > actual && +test_cmp - actual < actual && +test_cmp - actual < expected && +notmuch show id:$gen_msg_id|grep -o "filename:.*$" > actual && +test_cmp expected actual && +test -f "$gen_msg_filename" +' +test_expect_success "Check that the message was not renamed" ' +ls "${MAIL_DIR}/new" > actual && +test_cmp - actual < actual && +test_cmp - actual < actual && +test_cmp - actual < actual && +test_cmp - actual < actual +test_cmp - actual < actual && +test_cmp - actual < actual && +test_cmp - actual < actual && +test_cmp - actual < actual && +test_cmp - actual < expected && +mv $MAIL_DIR/msg-001:2,RS $MAIL_DIR/msg-001:2, && +mv $MAIL_DIR/msg-002:2,RS $MAIL_DIR/msg-002:2, && +increment_mtime $MAIL_DIR +' + +test_expect_success 'Test whether dump/new/restore synchronizes the maildir flags with the database' ' +notmuch dump dump.txt && +notmuch new && +notmuch restore dump.txt && +ls $MAIL_DIR > actual && +test_cmp expected actual +' + +test_done diff --git a/test/notmuch-test b/test/notmuch-test index 9a3c6983..b51045a7 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -16,7 +16,7 @@ fi cd $(dirname "$0") -TESTS="basic new search json thread-naming raw reply dump-restore uuencode thread-order author-order from-guessing long-id encoding emacs" +TESTS="basic new search json thread-naming raw reply dump-restore uuencode thread-order author-order from-guessing long-id encoding emacs maildir-sync" # Clean up any results from a previous run rm -r test-results >/dev/null 2>/dev/null diff --git a/test/test-lib.sh b/test/test-lib.sh index feb24f8f..418eaa7f 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -245,6 +245,12 @@ increment_mtime () # Generate the message in directory 'directory/of/choice' within # the mail store. The directory will be created if necessary. # +# [filename]=name +# +# Store the message in file 'name'. The default is to store it +# in 'msg-', where is three-digit number of the +# message. +# # [body]=text # # Text to use as the body of the email message @@ -281,10 +287,14 @@ generate_message () local additional_headers gen_msg_cnt=$((gen_msg_cnt + 1)) - gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt) + if [ -z "${template[filename]}" ]; then + gen_msg_name="msg-$(printf "%03d" $gen_msg_cnt)" + else + gen_msg_name=${template[filename]} + fi if [ -z "${template[id]}" ]; then - gen_msg_id="${gen_msg_name}@notmuch-test-suite" + gen_msg_id="${gen_msg_name%:2,*}@notmuch-test-suite" else gen_msg_id="${template[id]}" fi