aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/t0001-new.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/t0001-new.sh')
-rwxr-xr-xtest/t0001-new.sh164
1 files changed, 164 insertions, 0 deletions
diff --git a/test/t0001-new.sh b/test/t0001-new.sh
new file mode 100755
index 00000000..97726e72
--- /dev/null
+++ b/test/t0001-new.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+test_description="\"notmuch new\" in several variations"
+. ./test-lib.sh
+test_expect_success "No new messages" '
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail."
+
+'
+test_expect_success "Single new message" '
+generate_message &&
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 1 new message to the database."
+
+'
+test_expect_success "Multiple new messages" '
+generate_message &&
+generate_message &&
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 2 new messages to the database."
+
+'
+test_expect_success "No new messages (non-empty DB)" '
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail."
+
+'
+test_expect_success "New directories" '
+rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
+mkdir "${MAIL_DIR}"/def &&
+mkdir "${MAIL_DIR}"/ghi &&
+generate_message [dir]=def &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 1 new message to the database."
+
+'
+test_expect_success "Alternate inode order" '
+
+rm -rf "${MAIL_DIR}"/.notmuch &&
+mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc &&
+rm "${MAIL_DIR}"/def/* &&
+generate_message [dir]=abc &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 1 new message to the database."
+
+'
+test_expect_success "Message moved in" '
+rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
+generate_message &&
+tmp_msg_filename=tmp/"$gen_msg_filename" &&
+mkdir -p "$(dirname "$tmp_msg_filename")" &&
+mv "$gen_msg_filename" "$tmp_msg_filename" &&
+increment_mtime "${MAIL_DIR}" &&
+$NOTMUCH new > /dev/null &&
+mv "$tmp_msg_filename" "$gen_msg_filename" &&
+increment_mtime "${MAIL_DIR}" &&
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 1 new message to the database."
+
+'
+test_expect_success "Renamed message" '
+
+generate_message &&
+$NOTMUCH new > /dev/null &&
+mv "$gen_msg_filename" "${gen_msg_filename}"-renamed &&
+increment_mtime "${MAIL_DIR}" &&
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail. Detected 1 file rename."
+
+'
+test_expect_success "Deleted message" '
+
+rm "${gen_msg_filename}"-renamed &&
+increment_mtime "${MAIL_DIR}" &&
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail. Removed 1 message."
+
+'
+test_expect_success "Renamed directory" '
+
+generate_message [dir]=dir &&
+generate_message [dir]=dir &&
+generate_message [dir]=dir &&
+
+$NOTMUCH new > /dev/null &&
+
+mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed &&
+increment_mtime "${MAIL_DIR}" &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail. Detected 3 file renames."
+
+'
+test_expect_success "Deleted directory" '
+
+rm -rf "${MAIL_DIR}"/dir-renamed &&
+increment_mtime "${MAIL_DIR}" &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail. Removed 3 messages."
+
+'
+test_expect_success "New directory (at end of list)" '
+
+generate_message [dir]=zzz &&
+generate_message [dir]=zzz &&
+generate_message [dir]=zzz &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 3 new messages to the database."
+
+'
+test_expect_success "Deleted directory (end of list)" '
+
+rm -rf "${MAIL_DIR}"/zzz &&
+increment_mtime "${MAIL_DIR}" &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail. Removed 3 messages."
+
+'
+test_expect_success "New symlink to directory" '
+
+rm -rf "${MAIL_DIR}"/.notmuch &&
+mv "${MAIL_DIR}" "$PWD"/actual_maildir &&
+
+mkdir "${MAIL_DIR}" &&
+ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 1 new message to the database."
+
+'
+test_expect_success "New symlink to a file" '
+generate_message &&
+external_msg_filename="$PWD"/external/"$(basename "$gen_msg_filename")" &&
+mkdir -p "$(dirname "$external_msg_filename")" &&
+mv "$gen_msg_filename" "$external_msg_filename" &&
+ln -s "$external_msg_filename" "$gen_msg_filename" &&
+increment_mtime "${MAIL_DIR}" &&
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 1 new message to the database."
+
+'
+test_expect_success "New two-level directory" '
+
+generate_message [dir]=two/levels &&
+generate_message [dir]=two/levels &&
+generate_message [dir]=two/levels &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "Added 3 new messages to the database."
+
+'
+test_expect_success "Deleted two-level directory" '
+
+rm -rf "${MAIL_DIR}"/two &&
+increment_mtime "${MAIL_DIR}" &&
+
+output=$(NOTMUCH_NEW) &&
+pass_if_equal "$output" "No new mail. Removed 3 messages."
+'
+test_done