mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-26 19:34:51 +01:00
ce1e720de6
A new configuration key 'new.ignore' is used to determine which files and directories user wants not to be scanned as new mails. Mark the corresponding test as no longer broken. This work merges my previous attempts and Andreas Amann's work in id:"ylp7hi23mw8.fsf@tyndall.ie"
177 lines
4.6 KiB
Bash
Executable file
177 lines
4.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
test_description='"notmuch new" in several variations'
|
|
. ./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
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_begin_subtest "Multiple new messages"
|
|
generate_message
|
|
generate_message
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 2 new messages to the database."
|
|
|
|
|
|
test_begin_subtest "No new messages (non-empty DB)"
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail."
|
|
|
|
|
|
test_begin_subtest "New directories"
|
|
rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch
|
|
mkdir "${MAIL_DIR}"/def
|
|
mkdir "${MAIL_DIR}"/ghi
|
|
generate_message [dir]=def
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_begin_subtest "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)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_begin_subtest "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"
|
|
notmuch new > /dev/null
|
|
mv "$tmp_msg_filename" "$gen_msg_filename"
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_begin_subtest "Renamed message"
|
|
|
|
generate_message
|
|
notmuch new > /dev/null
|
|
mv "$gen_msg_filename" "${gen_msg_filename}"-renamed
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail. Detected 1 file rename."
|
|
|
|
|
|
test_begin_subtest "Deleted message"
|
|
|
|
rm "${gen_msg_filename}"-renamed
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail. Removed 1 message."
|
|
|
|
|
|
test_begin_subtest "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
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail. Detected 3 file renames."
|
|
|
|
|
|
test_begin_subtest "Deleted directory"
|
|
|
|
rm -rf "${MAIL_DIR}"/dir-renamed
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail. Removed 3 messages."
|
|
|
|
|
|
test_begin_subtest "New directory (at end of list)"
|
|
|
|
generate_message [dir]=zzz
|
|
generate_message [dir]=zzz
|
|
generate_message [dir]=zzz
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 3 new messages to the database."
|
|
|
|
|
|
test_begin_subtest "Deleted directory (end of list)"
|
|
|
|
rm -rf "${MAIL_DIR}"/zzz
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail. Removed 3 messages."
|
|
|
|
|
|
test_begin_subtest "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)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_begin_subtest "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"
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_begin_subtest "New two-level directory"
|
|
|
|
generate_message [dir]=two/levels
|
|
generate_message [dir]=two/levels
|
|
generate_message [dir]=two/levels
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "Added 3 new messages to the database."
|
|
|
|
|
|
test_begin_subtest "Deleted two-level directory"
|
|
|
|
rm -rf "${MAIL_DIR}"/two
|
|
|
|
output=$(NOTMUCH_NEW)
|
|
test_expect_equal "$output" "No new mail. Removed 3 messages."
|
|
|
|
# This test requires that notmuch new has been run at least once.
|
|
test_begin_subtest "Skip and report non-mail files"
|
|
generate_message
|
|
mkdir -p "${MAIL_DIR}"/.git && touch "${MAIL_DIR}"/.git/config
|
|
touch "${MAIL_DIR}"/ignored_file
|
|
touch "${MAIL_DIR}"/.ignored_hidden_file
|
|
output=$(NOTMUCH_NEW 2>&1)
|
|
test_expect_equal "$output" \
|
|
"Note: Ignoring non-mail file: ${MAIL_DIR}/.git/config
|
|
Note: Ignoring non-mail file: ${MAIL_DIR}/.ignored_hidden_file
|
|
Note: Ignoring non-mail file: ${MAIL_DIR}/ignored_file
|
|
Added 1 new message to the database."
|
|
|
|
test_begin_subtest "Ignore files and directories specified in new.ignore"
|
|
generate_message
|
|
notmuch config set new.ignore .git ignored_file .ignored_hidden_file
|
|
touch "${MAIL_DIR}"/.git # change .git's mtime for notmuch new to rescan.
|
|
output=$(NOTMUCH_NEW 2>&1)
|
|
test_expect_equal "$output" "Added 1 new message to the database."
|
|
|
|
|
|
test_done
|