]> git.notmuchmail.org Git - notmuch/blob - test/t0001-new.sh
test: Fix test suite to integrate with our non-recursive Makefile system.
[notmuch] / test / t0001-new.sh
1 #!/bin/bash
2 test_description="\"notmuch new\" in several variations"
3 . ./test-lib.sh
4 test_expect_success "No new messages" '
5 output=$(NOTMUCH_NEW) &&
6 pass_if_equal "$output" "No new mail."
7
8 '
9 test_expect_success "Single new message" '
10 generate_message &&
11 output=$(NOTMUCH_NEW) &&
12 pass_if_equal "$output" "Added 1 new message to the database."
13
14 '
15 test_expect_success "Multiple new messages" '
16 generate_message &&
17 generate_message &&
18 output=$(NOTMUCH_NEW) &&
19 pass_if_equal "$output" "Added 2 new messages to the database."
20
21 '
22 test_expect_success "No new messages (non-empty DB)" '
23 output=$(NOTMUCH_NEW) &&
24 pass_if_equal "$output" "No new mail."
25
26 '
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 &&
32
33 output=$(NOTMUCH_NEW) &&
34 pass_if_equal "$output" "Added 1 new message to the database."
35
36 '
37 test_expect_success "Alternate inode order" '
38
39 rm -rf "${MAIL_DIR}"/.notmuch &&
40 mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc &&
41 rm "${MAIL_DIR}"/def/* &&
42 generate_message [dir]=abc &&
43
44 output=$(NOTMUCH_NEW) &&
45 pass_if_equal "$output" "Added 1 new message to the database."
46
47 '
48 test_expect_success "Message moved in" '
49 rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
50 generate_message &&
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."
60
61 '
62 test_expect_success "Renamed message" '
63
64 generate_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."
70
71 '
72 test_expect_success "Deleted message" '
73
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."
78
79 '
80 test_expect_success "Renamed directory" '
81
82 generate_message [dir]=dir &&
83 generate_message [dir]=dir &&
84 generate_message [dir]=dir &&
85
86 $NOTMUCH new > /dev/null &&
87
88 mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed &&
89 increment_mtime "${MAIL_DIR}" &&
90
91 output=$(NOTMUCH_NEW) &&
92 pass_if_equal "$output" "No new mail. Detected 3 file renames."
93
94 '
95 test_expect_success "Deleted directory" '
96
97 rm -rf "${MAIL_DIR}"/dir-renamed &&
98 increment_mtime "${MAIL_DIR}" &&
99
100 output=$(NOTMUCH_NEW) &&
101 pass_if_equal "$output" "No new mail. Removed 3 messages."
102
103 '
104 test_expect_success "New directory (at end of list)" '
105
106 generate_message [dir]=zzz &&
107 generate_message [dir]=zzz &&
108 generate_message [dir]=zzz &&
109
110 output=$(NOTMUCH_NEW) &&
111 pass_if_equal "$output" "Added 3 new messages to the database."
112
113 '
114 test_expect_success "Deleted directory (end of list)" '
115
116 rm -rf "${MAIL_DIR}"/zzz &&
117 increment_mtime "${MAIL_DIR}" &&
118
119 output=$(NOTMUCH_NEW) &&
120 pass_if_equal "$output" "No new mail. Removed 3 messages."
121
122 '
123 test_expect_success "New symlink to directory" '
124
125 rm -rf "${MAIL_DIR}"/.notmuch &&
126 mv "${MAIL_DIR}" "$PWD"/actual_maildir &&
127
128 mkdir "${MAIL_DIR}" &&
129 ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink &&
130
131 output=$(NOTMUCH_NEW) &&
132 pass_if_equal "$output" "Added 1 new message to the database."
133
134 '
135 test_expect_success "New symlink to a file" '
136 generate_message &&
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."
144
145 '
146 test_expect_success "New two-level directory" '
147
148 generate_message [dir]=two/levels &&
149 generate_message [dir]=two/levels &&
150 generate_message [dir]=two/levels &&
151
152 output=$(NOTMUCH_NEW) &&
153 pass_if_equal "$output" "Added 3 new messages to the database."
154
155 '
156 test_expect_success "Deleted two-level directory" '
157
158 rm -rf "${MAIL_DIR}"/two &&
159 increment_mtime "${MAIL_DIR}" &&
160
161 output=$(NOTMUCH_NEW) &&
162 pass_if_equal "$output" "No new mail. Removed 3 messages."
163 '
164 test_done