[PATCH] test: test folder renames

Subject: [PATCH] test: test folder renames

Date: Sun, 26 Dec 2021 07:21:42 -0400

To: notmuch@notmuchmail.org


From: David Bremner

From: Jani Nikula <jani@nikula.org>

In [1] Mark Walters reported a problem with messages being removed
from the database when the parent directory was renamed. Jani Nikula
proposed [2] these tests but observed

   This test is not suitable for merging since it's not deterministic.

After applying Jani's patch [3], the tests now pass deterministically,
and could usefully act as regression tests.

[1]: id:87siray6th.fsf@qmul.ac.uk
[2]: id:1393191650-28333-1-git-send-email-jani@nikula.org
[3]: id:1441445731-4362-2-git-send-email-jani@nikula.org
 test/T051-new-renames.sh | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100755 test/T051-new-renames.sh

diff --git a/test/T051-new-renames.sh b/test/T051-new-renames.sh
new file mode 100755
index 00000000..febe006f
--- /dev/null
+++ b/test/T051-new-renames.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+test_description='"notmuch new" with directory renames'
+. ./test-lib.sh
+for loop in `seq 10`; do
+rm -rf ${MAIL_DIR}
+for i in `seq 10`; do
+    generate_message '[dir]=foo' '[subject]="Message foo $i"'
+for i in `seq 10`; do
+    generate_message '[dir]=bar' '[subject]="Message bar $i"'
+test_begin_subtest "Index the messages, round $loop"
+test_expect_equal "$output" "Added 20 new messages to the database."
+all_files=$(notmuch search --output=files \*)
+count_foo=$(notmuch count folder:foo)
+test_begin_subtest "Rename folder"
+mv ${MAIL_DIR}/foo ${MAIL_DIR}/baz
+test_expect_equal "$output" "No new mail. Detected $count_foo file renames."
+test_begin_subtest "Rename folder back"
+mv ${MAIL_DIR}/baz ${MAIL_DIR}/foo
+test_expect_equal "$output" "No new mail. Detected $count_foo file renames."
+test_begin_subtest "Files remain the same"
+output=$(notmuch search --output=files \*)
+test_expect_equal "$output" "$all_files"

notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org