diff options
Diffstat (limited to 'test/t0001-new.sh')
-rwxr-xr-x | test/t0001-new.sh | 164 |
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 |