test:Folder tags shouldn't match after removal of file in given folder

Test for bug.  Current stemming support for notmuch adds extra terms
to the DB which aren't removed when the file renames are detected.

When folder tags are added to a message, Xapian terms for both XFOLDER
and ZXFOLDER are generated.  When one of the filenames are
renamed/removed, only the XFOLDER tags are removed, leaving it possible
for a match on a folder: tag that was previously but is no longer a
match in the maildir.
(cherry picked from commit 86e0baeb6d)
This commit is contained in:
Mark Anderson 2011-06-27 11:12:24 -06:00 committed by David Bremner
parent fa0c0d0e66
commit c04e6f84d3
2 changed files with 49 additions and 0 deletions

View file

@ -41,6 +41,7 @@ TESTS="
maildir-sync
crypto
symbol-hiding
search-folder-coherence
"
TESTS=${NOTMUCH_TESTS:=$TESTS}

48
test/search-folder-coherence Executable file
View file

@ -0,0 +1,48 @@
#!/usr/bin/env bash
test_description='folder tags removed and added through file renames remain consistent'
. ./test-lib.sh
test_begin_subtest "No new messages"
output=$(NOTMUCH_NEW)
test_expect_equal "$output" "No new mail."
test_begin_subtest "Single new message"
generate_message
file_x=$gen_msg_filename
id_x=$gen_msg_id
output=$(NOTMUCH_NEW)
test_expect_equal "$output" "Added 1 new message to the database."
test_begin_subtest "Add second folder for same message"
dir=$(dirname $file_x)
mkdir $dir/spam
cp $file_x $dir/spam
output=$(NOTMUCH_NEW)
test_expect_equal "$output" "No new mail."
test_begin_subtest "Multiple files for same message"
cat <<EOF >EXPECTED
MAIL_DIR/msg-001
MAIL_DIR/spam/msg-001
EOF
notmuch search --output=files id:$id_x | sed -e "s,$MAIL_DIR,MAIL_DIR," >OUTPUT
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "Test matches folder:spam"
output=$(notmuch search folder:spam)
test_expect_equal "$output" "thread:0000000000000001 2001-01-05 [1/1] Notmuch Test Suite; Test message #1 (inbox unread)"
sleep 1;
test_begin_subtest "Remove folder:spam copy of email"
rm $dir/spam/$(basename $file_x)
output=$(NOTMUCH_NEW)
test_expect_equal "$output" "No new mail. Detected 1 file rename."
test_begin_subtest "No mails match the folder:spam search"
output=$(notmuch search folder:spam)
test_expect_equal "$output" ""
test_done