There was a problem with the directory documents being left behind when
the filesystem directory was removed. This was worked around in [1].
However, that ignored the fact that the directory documents are also
still listed by notmuch_directory_get_child_directories() leading to
confusing results when running notmuch new. The directory documents are
found and queued for removal over and over again.
Fix the problem for real by removing the directory documents. This fixes
the tests flagged as broken in [2].
The (non-deterministic) hack test from [3] also still passes with this
change.
[1] commit
acd66cdec075312944e527febd46382e54d99367
[2] commit
ed9ceda623d3f22fb66365b33db63c5c982067d3
[3] id:
1441445731-4362-1-git-send-email-jani@nikula.org
- /*
- * XXX: The library does not have a function to remove a directory
- * document for a path. Usually this doesn't matter except for a
- * slight waste of space. However, if the directory gets added to
- * the filesystem again, the old directory document is found with
- * the old mtime. Reset the directory mtime to avoid problems.
- */
- notmuch_directory_set_mtime (directory, 0);
+ status = notmuch_directory_delete (directory);
- notmuch_directory_destroy (directory);
+ if (status)
+ notmuch_directory_destroy (directory);
test_begin_subtest "Deleted directory"
test_begin_subtest "Deleted directory"
-test_subtest_known_broken
rm -rf "${MAIL_DIR}"/dir-renamed
output=$(NOTMUCH_NEW --debug)
rm -rf "${MAIL_DIR}"/dir-renamed
output=$(NOTMUCH_NEW --debug)
test_begin_subtest "New directory (at end of list)"
test_begin_subtest "New directory (at end of list)"
-test_subtest_known_broken
generate_message [dir]=zzz
generate_message [dir]=zzz
generate_message [dir]=zzz
generate_message [dir]=zzz
test_begin_subtest "Deleted directory (end of list)"
test_begin_subtest "Deleted directory (end of list)"
-test_subtest_known_broken
rm -rf "${MAIL_DIR}"/zzz
output=$(NOTMUCH_NEW --debug)
rm -rf "${MAIL_DIR}"/zzz
output=$(NOTMUCH_NEW --debug)
No new mail. Removed 3 messages."
test_begin_subtest "Support single-message mbox"
No new mail. Removed 3 messages."
test_begin_subtest "Support single-message mbox"
-test_subtest_known_broken
cat > "${MAIL_DIR}"/mbox_file1 <<EOF
From test_suite@notmuchmail.org Fri Jan 5 15:43:57 2001
From: Notmuch Test Suite <test_suite@notmuchmail.org>
cat > "${MAIL_DIR}"/mbox_file1 <<EOF
From test_suite@notmuchmail.org Fri Jan 5 15:43:57 2001
From: Notmuch Test Suite <test_suite@notmuchmail.org>
# This test requires that notmuch new has been run at least once.
test_begin_subtest "Skip and report non-mail files"
# This test requires that notmuch new has been run at least once.
test_begin_subtest "Skip and report non-mail files"
-test_subtest_known_broken
generate_message
mkdir -p "${MAIL_DIR}"/.git && touch "${MAIL_DIR}"/.git/config
touch "${MAIL_DIR}"/ignored_file
generate_message
mkdir -p "${MAIL_DIR}"/.git && touch "${MAIL_DIR}"/.git/config
touch "${MAIL_DIR}"/ignored_file
test_expect_equal "$output" "Added 1 new message to the database."
test_begin_subtest "Ignore files and directories specified in new.ignore (multiple occurrences)"
test_expect_equal "$output" "Added 1 new message to the database."
test_begin_subtest "Ignore files and directories specified in new.ignore (multiple occurrences)"
-test_subtest_known_broken
notmuch config set new.ignore .git ignored_file .ignored_hidden_file
notmuch new > /dev/null # ensure that files/folders will be printed in ASCII order.
touch "${MAIL_DIR}"/.git # change .git's mtime for notmuch new to rescan.
notmuch config set new.ignore .git ignored_file .ignored_hidden_file
notmuch new > /dev/null # ensure that files/folders will be printed in ASCII order.
touch "${MAIL_DIR}"/.git # change .git's mtime for notmuch new to rescan.