2 test_description="\"notmuch new\" in several variations"
4 test_expect_success "No new messages" '
5 output=$(NOTMUCH_NEW) &&
6 pass_if_equal "$output" "No new mail."
9 test_expect_success "Single new message" '
11 output=$(NOTMUCH_NEW) &&
12 pass_if_equal "$output" "Added 1 new message to the database."
15 test_expect_success "Multiple new messages" '
18 output=$(NOTMUCH_NEW) &&
19 pass_if_equal "$output" "Added 2 new messages to the database."
22 test_expect_success "No new messages (non-empty DB)" '
23 output=$(NOTMUCH_NEW) &&
24 pass_if_equal "$output" "No new mail."
27 test_expect_success "New directories" '
28 rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
29 mkdir "${MAIL_DIR}"/def &&
30 mkdir "${MAIL_DIR}"/ghi &&
31 generate_message [dir]=def &&
33 output=$(NOTMUCH_NEW) &&
34 pass_if_equal "$output" "Added 1 new message to the database."
37 test_expect_success "Alternate inode order" '
39 rm -rf "${MAIL_DIR}"/.notmuch &&
40 mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc &&
41 rm "${MAIL_DIR}"/def/* &&
42 generate_message [dir]=abc &&
44 output=$(NOTMUCH_NEW) &&
45 pass_if_equal "$output" "Added 1 new message to the database."
48 test_expect_success "Message moved in" '
49 rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
51 tmp_msg_filename=tmp/"$gen_msg_filename" &&
52 mkdir -p "$(dirname "$tmp_msg_filename")" &&
53 mv "$gen_msg_filename" "$tmp_msg_filename" &&
54 increment_mtime "${MAIL_DIR}" &&
55 $NOTMUCH new > /dev/null &&
56 mv "$tmp_msg_filename" "$gen_msg_filename" &&
57 increment_mtime "${MAIL_DIR}" &&
58 output=$(NOTMUCH_NEW) &&
59 pass_if_equal "$output" "Added 1 new message to the database."
62 test_expect_success "Renamed message" '
65 $NOTMUCH new > /dev/null &&
66 mv "$gen_msg_filename" "${gen_msg_filename}"-renamed &&
67 increment_mtime "${MAIL_DIR}" &&
68 output=$(NOTMUCH_NEW) &&
69 pass_if_equal "$output" "No new mail. Detected 1 file rename."
72 test_expect_success "Deleted message" '
74 rm "${gen_msg_filename}"-renamed &&
75 increment_mtime "${MAIL_DIR}" &&
76 output=$(NOTMUCH_NEW) &&
77 pass_if_equal "$output" "No new mail. Removed 1 message."
80 test_expect_success "Renamed directory" '
82 generate_message [dir]=dir &&
83 generate_message [dir]=dir &&
84 generate_message [dir]=dir &&
86 $NOTMUCH new > /dev/null &&
88 mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed &&
89 increment_mtime "${MAIL_DIR}" &&
91 output=$(NOTMUCH_NEW) &&
92 pass_if_equal "$output" "No new mail. Detected 3 file renames."
95 test_expect_success "Deleted directory" '
97 rm -rf "${MAIL_DIR}"/dir-renamed &&
98 increment_mtime "${MAIL_DIR}" &&
100 output=$(NOTMUCH_NEW) &&
101 pass_if_equal "$output" "No new mail. Removed 3 messages."
104 test_expect_success "New directory (at end of list)" '
106 generate_message [dir]=zzz &&
107 generate_message [dir]=zzz &&
108 generate_message [dir]=zzz &&
110 output=$(NOTMUCH_NEW) &&
111 pass_if_equal "$output" "Added 3 new messages to the database."
114 test_expect_success "Deleted directory (end of list)" '
116 rm -rf "${MAIL_DIR}"/zzz &&
117 increment_mtime "${MAIL_DIR}" &&
119 output=$(NOTMUCH_NEW) &&
120 pass_if_equal "$output" "No new mail. Removed 3 messages."
123 test_expect_success "New symlink to directory" '
125 rm -rf "${MAIL_DIR}"/.notmuch &&
126 mv "${MAIL_DIR}" "$PWD"/actual_maildir &&
128 mkdir "${MAIL_DIR}" &&
129 ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink &&
131 output=$(NOTMUCH_NEW) &&
132 pass_if_equal "$output" "Added 1 new message to the database."
135 test_expect_success "New symlink to a file" '
137 external_msg_filename="$PWD"/external/"$(basename "$gen_msg_filename")" &&
138 mkdir -p "$(dirname "$external_msg_filename")" &&
139 mv "$gen_msg_filename" "$external_msg_filename" &&
140 ln -s "$external_msg_filename" "$gen_msg_filename" &&
141 increment_mtime "${MAIL_DIR}" &&
142 output=$(NOTMUCH_NEW) &&
143 pass_if_equal "$output" "Added 1 new message to the database."
146 test_expect_success "New two-level directory" '
148 generate_message [dir]=two/levels &&
149 generate_message [dir]=two/levels &&
150 generate_message [dir]=two/levels &&
152 output=$(NOTMUCH_NEW) &&
153 pass_if_equal "$output" "Added 3 new messages to the database."
156 test_expect_success "Deleted two-level directory" '
158 rm -rf "${MAIL_DIR}"/two &&
159 increment_mtime "${MAIL_DIR}" &&
161 output=$(NOTMUCH_NEW) &&
162 pass_if_equal "$output" "No new mail. Removed 3 messages."