Re: [PATCH] emacs: wash: make word-wrap bound message width
[notmuch-archives.git] / 3f / ebdc0008f5a42bc697f1ff8025039dc72d9784
1 Return-Path: <sojkam1@fel.cvut.cz>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id 9B1294196F0\r
6         for <notmuch@notmuchmail.org>; Mon, 10 May 2010 09:49:18 -0700 (PDT)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -1.899\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5\r
12         tests=[BAYES_00=-1.9, NORMAL_HTTP_TO_IP=0.001] autolearn=ham\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id WAJh6kUfZGaA for <notmuch@notmuchmail.org>;\r
16         Mon, 10 May 2010 09:48:55 -0700 (PDT)\r
17 Received: from max.feld.cvut.cz (max.feld.cvut.cz [147.32.192.36])\r
18         by olra.theworths.org (Postfix) with ESMTP id D5CCF418C34\r
19         for <notmuch@notmuchmail.org>; Mon, 10 May 2010 09:48:23 -0700 (PDT)\r
20 Received: from localhost (unknown [192.168.200.4])\r
21         by max.feld.cvut.cz (Postfix) with ESMTP id 37BE119F3439;\r
22         Mon, 10 May 2010 18:48:23 +0200 (CEST)\r
23 X-Virus-Scanned: IMAP AMAVIS\r
24 Received: from max.feld.cvut.cz ([192.168.200.1])\r
25         by localhost (styx.feld.cvut.cz [192.168.200.4]) (amavisd-new,\r
26         port 10044)\r
27         with ESMTP id 2gcqQPNSabAx; Mon, 10 May 2010 18:48:14 +0200 (CEST)\r
28 Received: from imap.feld.cvut.cz (imap.feld.cvut.cz [147.32.192.34])\r
29         by max.feld.cvut.cz (Postfix) with ESMTP id 9D71B19F343F;\r
30         Mon, 10 May 2010 18:48:14 +0200 (CEST)\r
31 Received: from steelpick.2x.cz (k335-30.felk.cvut.cz [147.32.86.30])\r
32         (Authenticated sender: sojkam1)\r
33         by imap.feld.cvut.cz (Postfix) with ESMTPSA id 93EBAFA003;\r
34         Mon, 10 May 2010 18:48:14 +0200 (CEST)\r
35 Received: from wsh by steelpick.2x.cz with local (Exim 4.71)\r
36         (envelope-from <sojkam1@fel.cvut.cz>)\r
37         id 1OBW9O-0005Be-EL; Mon, 10 May 2010 18:48:14 +0200\r
38 From: Michal Sojka <sojkam1@fel.cvut.cz>\r
39 To: notmuch@notmuchmail.org\r
40 Subject: [PATCH v2 4/5] Convert the actual tests to the new framework\r
41 Date: Mon, 10 May 2010 18:48:03 +0200\r
42 Message-Id: <1273510084-19896-5-git-send-email-sojkam1@fel.cvut.cz>\r
43 X-Mailer: git-send-email 1.7.1\r
44 In-Reply-To: <1273510084-19896-1-git-send-email-sojkam1@fel.cvut.cz>\r
45 References: <1273510084-19896-1-git-send-email-sojkam1@fel.cvut.cz>\r
46 X-BeenThere: notmuch@notmuchmail.org\r
47 X-Mailman-Version: 2.1.13\r
48 Precedence: list\r
49 List-Id: "Use and development of the notmuch mail system."\r
50         <notmuch.notmuchmail.org>\r
51 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
52         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
53 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
54 List-Post: <mailto:notmuch@notmuchmail.org>\r
55 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
56 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
57         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
58 X-List-Received-Date: Mon, 10 May 2010 16:49:18 -0000\r
59 \r
60 The changes are:\r
61 - The notmuch-test was split into several files (t000?-*.sh).\r
62 - Removed helper functions which were moved to test-lib.sh\r
63 - Replaced every printf with test_expect_success.\r
64 - Test commands chained with && (test-lib.sh doesn't use "set -e" in\r
65   order to complete the test suite even if something fails)\r
66 - Many variables such as ${MAIL_DIR} were properly quoted as they\r
67   contain spaces.\r
68 - Changed quoting patterns in add_message and generate_message (single\r
69   quotes are already used by the test framework).\r
70 - ${TEST_DIR} replaced by ${PWD}\r
71 \r
72 QUICK HOWTO:\r
73 \r
74 To run the whole test suite\r
75     make\r
76 \r
77 To run only a single test\r
78    ./t0001-new.sh\r
79 \r
80 To stop on the first error\r
81    ./t0001-new.sh -i\r
82 then mail store and database can be inspected in\r
83 "trash directory.t0001-new"\r
84 \r
85 To see the output of tests\r
86    ./t0001-new.sh -v\r
87 \r
88 To not remove trash directory at the end:\r
89    ./t0001-new.sh -d\r
90 \r
91 To run all tests verbosely:\r
92    make GIT_TEST_OPTS="-v"\r
93 \r
94 Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>\r
95 ---\r
96  test/notmuch-test                    | 1114 +---------------------------------\r
97  test/t0000-basic.sh                  |    2 +-\r
98  test/t0001-new.sh                    |  164 +++++\r
99  test/t0002-search.sh                 |  111 ++++\r
100  test/t0003-json.sh                   |   46 ++\r
101  test/t0004-thread-naming.sh          |  191 ++++++\r
102  test/t0005-reply.sh                  |  122 ++++\r
103  test/t0006-dump-restore.sh           |   30 +\r
104  test/t0007-uuencode.sh               |   36 ++\r
105  test/t0008-threading-out-of-order.sh |   31 +\r
106  test/t0009-author-reordering.sh      |   35 ++\r
107  test/t0010-from-line-heuristics.sh   |  214 +++++++\r
108  12 files changed, 983 insertions(+), 1113 deletions(-)\r
109  create mode 100755 test/t0001-new.sh\r
110  create mode 100755 test/t0002-search.sh\r
111  create mode 100755 test/t0003-json.sh\r
112  create mode 100755 test/t0004-thread-naming.sh\r
113  create mode 100755 test/t0005-reply.sh\r
114  create mode 100755 test/t0006-dump-restore.sh\r
115  create mode 100755 test/t0007-uuencode.sh\r
116  create mode 100755 test/t0008-threading-out-of-order.sh\r
117  create mode 100755 test/t0009-author-reordering.sh\r
118  create mode 100755 test/t0010-from-line-heuristics.sh\r
119 \r
120 diff --git a/test/notmuch-test b/test/notmuch-test\r
121 index a861df1..5c066ed 100755\r
122 --- a/test/notmuch-test\r
123 +++ b/test/notmuch-test\r
124 @@ -1,1114 +1,4 @@\r
125  #!/bin/bash\r
126 -set -e\r
127  \r
128 -# Messages contain time/date values with time zone and notmuch\r
129 -# displays them converted to the local time zone. We need to set fixed\r
130 -# timezone here so that the output of the tests is always the same\r
131 -# without regard to the time zone of where the test suite is run.\r
132 -export TZ=UTC+8\r
133 -\r
134 -find_notmuch_binary ()\r
135 -{\r
136 -    dir=$1\r
137 -\r
138 -    while [ -n "$dir" ]; do\r
139 -       bin=$dir/notmuch\r
140 -       if [ -x $bin ]; then\r
141 -           echo $bin\r
142 -           return\r
143 -       fi\r
144 -       dir=$(dirname $dir)\r
145 -       if [ "$dir" = "/" ]; then\r
146 -           break\r
147 -       fi\r
148 -    done\r
149 -\r
150 -    echo notmuch\r
151 -}\r
152 -\r
153 -increment_mtime_amount=0\r
154 -increment_mtime ()\r
155 -{\r
156 -    dir=$1\r
157 -\r
158 -    increment_mtime_amount=$((increment_mtime_amount + 1))\r
159 -    touch -d "+${increment_mtime_amount} seconds" $dir\r
160 -}\r
161 -\r
162 -# Generate a new message in the mail directory, with a unique message\r
163 -# ID and subject. The message is not added to the index.\r
164 -#\r
165 -# After this function returns, the filename of the generated message\r
166 -# is available as $gen_msg_filename and the message ID is available as\r
167 -# $gen_msg_id .\r
168 -#\r
169 -# This function supports named parameters with the bash syntax for\r
170 -# assigning a value to an associative array ([name]=value). The\r
171 -# supported parameters are:\r
172 -#\r
173 -#  [dir]=directory/of/choice\r
174 -#\r
175 -#      Generate the message in directory 'directory/of/choice' within\r
176 -#      the mail store. The directory will be created if necessary.\r
177 -#\r
178 -#  [body]=text\r
179 -#\r
180 -#      Text to use as the body of the email message\r
181 -#\r
182 -#  '[from]="Some User <user@example.com>"'\r
183 -#  '[to]="Some User <user@example.com>"'\r
184 -#  '[subject]="Subject of email message"'\r
185 -#  '[date]="RFC 822 Date"'\r
186 -#\r
187 -#      Values for email headers. If not provided, default values will\r
188 -#      be generated instead.\r
189 -#\r
190 -#  '[cc]="Some User <user@example.com>"'\r
191 -#  [reply-to]=some-address\r
192 -#  [in-reply-to]=<message-id>\r
193 -#  '[header]=full header line, including keyword'\r
194 -#\r
195 -#      Additional values for email headers. If these are not provided\r
196 -#      then the relevant headers will simply not appear in the\r
197 -#      message.\r
198 -#\r
199 -#  '[id]=<message-id>'\r
200 -#\r
201 -#      Controls the message-id of the created message.\r
202 -gen_msg_cnt=0\r
203 -gen_msg_filename=""\r
204 -gen_msg_id=""\r
205 -generate_message ()\r
206 -{\r
207 -    # This is our (bash-specific) magic for doing named parameters\r
208 -    local -A template="($@)"\r
209 -    local additional_headers\r
210 -\r
211 -    if [ -z "${template[id]}" ]; then\r
212 -       gen_msg_cnt=$((gen_msg_cnt + 1))\r
213 -       gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt)\r
214 -       gen_msg_id="${gen_msg_name}@notmuch-test-suite"\r
215 -    else\r
216 -       gen_msg_name="msg-${template[id]}"\r
217 -       gen_msg_id="${template[id]}"\r
218 -    fi\r
219 -\r
220 -    if [ -z "${template[dir]}" ]; then\r
221 -       gen_msg_filename="${MAIL_DIR}/$gen_msg_name"\r
222 -    else\r
223 -       gen_msg_filename="${MAIL_DIR}/${template[dir]}/$gen_msg_name"\r
224 -       mkdir -p $(dirname $gen_msg_filename)\r
225 -    fi\r
226 -\r
227 -    if [ -z "${template[body]}" ]; then\r
228 -       template[body]="This is just a test message (#${gen_msg_cnt})"\r
229 -    fi\r
230 -\r
231 -    if [ -z "${template[from]}" ]; then\r
232 -       template[from]="Notmuch Test Suite <test_suite@notmuchmail.org>"\r
233 -    fi\r
234 -\r
235 -    if [ -z "${template[to]}" ]; then\r
236 -       template[to]="Notmuch Test Suite <test_suite@notmuchmail.org>"\r
237 -    fi\r
238 -\r
239 -    if [ -z "${template[subject]}" ]; then\r
240 -       template[subject]="Test message #${gen_msg_cnt}"\r
241 -    fi\r
242 -\r
243 -    if [ -z "${template[date]}" ]; then\r
244 -       template[date]="Tue, 05 Jan 2001 15:43:57 -0800"\r
245 -    fi\r
246 -\r
247 -    additional_headers=""\r
248 -    if [ ! -z "${template[header]}" ]; then\r
249 -       additional_headers="${template[header]}\r
250 -${additional_headers}"\r
251 -    fi\r
252 -\r
253 -    if [ ! -z "${template[reply-to]}" ]; then\r
254 -       additional_headers="Reply-To: ${template[reply-to]}\r
255 -${additional_headers}"\r
256 -    fi\r
257 -\r
258 -    if [ ! -z "${template[in-reply-to]}" ]; then\r
259 -       additional_headers="In-Reply-To: ${template[in-reply-to]}\r
260 -${additional_headers}"\r
261 -    fi\r
262 -\r
263 -    if [ ! -z "${template[cc]}" ]; then\r
264 -       additional_headers="Cc: ${template[cc]}\r
265 -${additional_headers}"\r
266 -    fi\r
267 -\r
268 -\r
269 -cat <<EOF >$gen_msg_filename\r
270 -From: ${template[from]}\r
271 -To: ${template[to]}\r
272 -Message-Id: <${gen_msg_id}>\r
273 -Subject: ${template[subject]}\r
274 -Date: ${template[date]}\r
275 -${additional_headers}\r
276 -${template[body]}\r
277 -EOF\r
278 -\r
279 -    # Ensure that the mtime of the containing directory is updated\r
280 -    increment_mtime $(dirname ${gen_msg_filename})\r
281 -}\r
282 -\r
283 -# Generate a new message and add it to the index.\r
284 -#\r
285 -# All of the arguments and return values supported by generate_message\r
286 -# are also supported here, so see that function for details.\r
287 -add_message ()\r
288 -{\r
289 -    generate_message "$@"\r
290 -\r
291 -    $NOTMUCH new > /dev/null\r
292 -}\r
293 -\r
294 -tests=0\r
295 -test_failures=0\r
296 -\r
297 -pass_if_equal ()\r
298 -{\r
299 -    output=$1\r
300 -    expected=$2\r
301 -\r
302 -    tests=$((tests + 1))\r
303 -\r
304 -    if [ "$output" = "$expected" ]; then\r
305 -       echo "  PASS"\r
306 -    else\r
307 -       echo "  FAIL"\r
308 -       testname=test-$(printf "%03d" $tests)\r
309 -       echo "$expected" > $testname.expected\r
310 -       echo "$output" > $testname.output\r
311 -       diff -u $testname.expected $testname.output || true\r
312 -       test_failures=$((test_failures + 1))\r
313 -    fi\r
314 -}\r
315 -\r
316 -TEST_DIR=$(pwd)/test.$$\r
317 -MAIL_DIR=${TEST_DIR}/mail\r
318 -export NOTMUCH_CONFIG=${TEST_DIR}/notmuch-config\r
319 -NOTMUCH=$(find_notmuch_binary $(pwd))\r
320 -\r
321 -NOTMUCH_NEW ()\r
322 -{\r
323 -    $NOTMUCH new | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file'\r
324 -}\r
325 -\r
326 -notmuch_search_sanitize ()\r
327 -{\r
328 -    sed -r -e 's/("?thread"?: ?)("?)................("?)/\1\2XXX\3/'\r
329 -}\r
330 -\r
331 -NOTMUCH_SHOW_FILENAME_SQUELCH='s,filename:.*/mail,filename:/XXX/mail,'\r
332 -notmuch_show_sanitize ()\r
333 -{\r
334 -    sed -e "$NOTMUCH_SHOW_FILENAME_SQUELCH"\r
335 -}\r
336 -\r
337 -rm -rf ${TEST_DIR}\r
338 -mkdir ${TEST_DIR}\r
339 -cd ${TEST_DIR}\r
340 -\r
341 -mkdir ${MAIL_DIR}\r
342 -\r
343 -cat <<EOF > ${NOTMUCH_CONFIG}\r
344 -[database]\r
345 -path=${MAIL_DIR}\r
346 -\r
347 -[user]\r
348 -name=Notmuch Test Suite\r
349 -primary_email=test_suite@notmuchmail.org\r
350 -other_email=test_suite_other@notmuchmail.org;test_suite@otherdomain.org\r
351 -EOF\r
352 -\r
353 -printf "Testing \"notmuch new\" in several variations:\n"\r
354 -printf " No new messages...\t\t\t\t"\r
355 -output=$(NOTMUCH_NEW)\r
356 -pass_if_equal "$output" "No new mail."\r
357 -\r
358 -printf " Single new message...\t\t\t\t"\r
359 -generate_message\r
360 -output=$(NOTMUCH_NEW)\r
361 -pass_if_equal "$output" "Added 1 new message to the database."\r
362 -\r
363 -printf " Multiple new messages...\t\t\t"\r
364 -generate_message\r
365 -generate_message\r
366 -output=$(NOTMUCH_NEW)\r
367 -pass_if_equal "$output" "Added 2 new messages to the database."\r
368 -\r
369 -printf " No new messages (non-empty DB)...\t\t"\r
370 -output=$(NOTMUCH_NEW)\r
371 -pass_if_equal "$output" "No new mail."\r
372 -\r
373 -printf " New directories...\t\t\t\t"\r
374 -rm -rf ${MAIL_DIR}/* ${MAIL_DIR}/.notmuch\r
375 -mkdir ${MAIL_DIR}/def\r
376 -mkdir ${MAIL_DIR}/ghi\r
377 -generate_message [dir]=def\r
378 -\r
379 -output=$(NOTMUCH_NEW)\r
380 -pass_if_equal "$output" "Added 1 new message to the database."\r
381 -\r
382 -printf " Alternate inode order...\t\t\t"\r
383 -\r
384 -rm -rf ${MAIL_DIR}/.notmuch\r
385 -mv ${MAIL_DIR}/ghi ${MAIL_DIR}/abc\r
386 -rm ${MAIL_DIR}/def/*\r
387 -generate_message [dir]=abc\r
388 -\r
389 -output=$(NOTMUCH_NEW)\r
390 -pass_if_equal "$output" "Added 1 new message to the database."\r
391 -\r
392 -printf " Message moved in...\t\t\t\t"\r
393 -rm -rf ${MAIL_DIR}/* ${MAIL_DIR}/.notmuch\r
394 -generate_message\r
395 -tmp_msg_filename=tmp/$gen_msg_filename\r
396 -mkdir -p $(dirname $tmp_msg_filename)\r
397 -mv $gen_msg_filename $tmp_msg_filename\r
398 -increment_mtime ${MAIL_DIR}\r
399 -$NOTMUCH new > /dev/null\r
400 -mv $tmp_msg_filename $gen_msg_filename\r
401 -increment_mtime ${MAIL_DIR}\r
402 -output=$(NOTMUCH_NEW)\r
403 -pass_if_equal "$output" "Added 1 new message to the database."\r
404 -\r
405 -printf " Renamed message...\t\t\t\t"\r
406 -\r
407 -generate_message\r
408 -$NOTMUCH new > /dev/null\r
409 -mv $gen_msg_filename ${gen_msg_filename}-renamed\r
410 -increment_mtime ${MAIL_DIR}\r
411 -output=$(NOTMUCH_NEW)\r
412 -pass_if_equal "$output" "No new mail. Detected 1 file rename."\r
413 -\r
414 -printf " Deleted message...\t\t\t\t"\r
415 -\r
416 -rm ${gen_msg_filename}-renamed\r
417 -increment_mtime ${MAIL_DIR}\r
418 -output=$(NOTMUCH_NEW)\r
419 -pass_if_equal "$output" "No new mail. Removed 1 message."\r
420 -\r
421 -printf " Renamed directory...\t\t\t\t"\r
422 -\r
423 -generate_message [dir]=dir\r
424 -generate_message [dir]=dir\r
425 -generate_message [dir]=dir\r
426 -\r
427 -$NOTMUCH new > /dev/null\r
428 -\r
429 -mv ${MAIL_DIR}/dir ${MAIL_DIR}/dir-renamed\r
430 -increment_mtime ${MAIL_DIR}\r
431 -\r
432 -output=$(NOTMUCH_NEW)\r
433 -pass_if_equal "$output" "No new mail. Detected 3 file renames."\r
434 -\r
435 -printf " Deleted directory...\t\t\t\t"\r
436 -\r
437 -rm -rf ${MAIL_DIR}/dir-renamed\r
438 -increment_mtime ${MAIL_DIR}\r
439 -\r
440 -output=$(NOTMUCH_NEW)\r
441 -pass_if_equal "$output" "No new mail. Removed 3 messages."\r
442 -\r
443 -printf " New directory (at end of list)...\t\t"\r
444 -\r
445 -generate_message [dir]=zzz\r
446 -generate_message [dir]=zzz\r
447 -generate_message [dir]=zzz\r
448 -\r
449 -output=$(NOTMUCH_NEW)\r
450 -pass_if_equal "$output" "Added 3 new messages to the database."\r
451 -\r
452 -printf " Deleted directory (end of list)...\t\t"\r
453 -\r
454 -rm -rf ${MAIL_DIR}/zzz\r
455 -increment_mtime ${MAIL_DIR}\r
456 -\r
457 -output=$(NOTMUCH_NEW)\r
458 -pass_if_equal "$output" "No new mail. Removed 3 messages."\r
459 -\r
460 -printf " New symlink to directory...\t\t\t"\r
461 -\r
462 -rm -rf ${MAIL_DIR}/.notmuch\r
463 -mv ${MAIL_DIR} ${TEST_DIR}/actual_maildir\r
464 -\r
465 -mkdir ${MAIL_DIR}\r
466 -ln -s ${TEST_DIR}/actual_maildir ${MAIL_DIR}/symlink\r
467 -\r
468 -output=$(NOTMUCH_NEW)\r
469 -pass_if_equal "$output" "Added 1 new message to the database."\r
470 -\r
471 -printf " New symlink to a file...\t\t\t"\r
472 -generate_message\r
473 -external_msg_filename=${TEST_DIR}/external/$(basename $gen_msg_filename)\r
474 -mkdir -p $(dirname $external_msg_filename)\r
475 -mv $gen_msg_filename $external_msg_filename\r
476 -ln -s $external_msg_filename $gen_msg_filename\r
477 -increment_mtime ${MAIL_DIR}\r
478 -output=$(NOTMUCH_NEW)\r
479 -pass_if_equal "$output" "Added 1 new message to the database."\r
480 -\r
481 -printf " New two-level directory...\t\t\t"\r
482 -\r
483 -generate_message [dir]=two/levels\r
484 -generate_message [dir]=two/levels\r
485 -generate_message [dir]=two/levels\r
486 -\r
487 -output=$(NOTMUCH_NEW)\r
488 -pass_if_equal "$output" "Added 3 new messages to the database."\r
489 -\r
490 -printf " Deleted two-level directory...\t\t\t"\r
491 -\r
492 -rm -rf ${MAIL_DIR}/two\r
493 -increment_mtime ${MAIL_DIR}\r
494 -\r
495 -output=$(NOTMUCH_NEW)\r
496 -pass_if_equal "$output" "No new mail. Removed 3 messages."\r
497 -\r
498 -printf "\nTesting \"notmuch search\" in several variations:\n"\r
499 -\r
500 -printf " Search body...\t\t\t\t\t"\r
501 -add_message '[subject]="body search"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' [body]=bodysearchtest\r
502 -output=$($NOTMUCH search bodysearchtest | notmuch_search_sanitize)\r
503 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)"\r
504 -\r
505 -printf " Search by from:...\t\t\t\t"\r
506 -add_message '[subject]="search by from"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' [from]=searchbyfrom\r
507 -output=$($NOTMUCH search from:searchbyfrom | notmuch_search_sanitize)\r
508 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)"\r
509 -\r
510 -printf " Search by to:...\t\t\t\t"\r
511 -add_message '[subject]="search by to"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' [to]=searchbyto\r
512 -output=$($NOTMUCH search to:searchbyto | notmuch_search_sanitize)\r
513 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)"\r
514 -\r
515 -printf " Search by subject:...\t\t\t\t"\r
516 -add_message [subject]=subjectsearchtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
517 -output=$($NOTMUCH search subject:subjectsearchtest | notmuch_search_sanitize)\r
518 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)"\r
519 -\r
520 -printf " Search by id:...\t\t\t\t"\r
521 -add_message '[subject]="search by id"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
522 -output=$($NOTMUCH search id:${gen_msg_id} | notmuch_search_sanitize)\r
523 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)"\r
524 -\r
525 -printf " Search by tag:...\t\t\t\t"\r
526 -add_message '[subject]="search by tag"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
527 -$NOTMUCH tag +searchbytag id:${gen_msg_id}\r
528 -output=$($NOTMUCH search tag:searchbytag | notmuch_search_sanitize)\r
529 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)"\r
530 -\r
531 -printf " Search by thread:...\t\t\t\t"\r
532 -add_message '[subject]="search by thread"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
533 -thread_id=$($NOTMUCH search id:${gen_msg_id} | sed -e 's/thread:\([a-f0-9]*\).*/\1/')\r
534 -output=$($NOTMUCH search thread:${thread_id} | notmuch_search_sanitize)\r
535 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)"\r
536 -\r
537 -printf " Search body (phrase)...\t\t\t"\r
538 -add_message '[subject]="body search (phrase)"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="body search (phrase)"'\r
539 -add_message '[subject]="negative result"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="This phrase should not match the body search"'\r
540 -output=$($NOTMUCH search '\"body search (phrase)\"' | notmuch_search_sanitize)\r
541 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (phrase) (inbox unread)"\r
542 -\r
543 -printf " Search by from: (address)...\t\t\t"\r
544 -add_message '[subject]="search by from (address)"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' [from]=searchbyfrom@example.com\r
545 -output=$($NOTMUCH search from:searchbyfrom@example.com | notmuch_search_sanitize)\r
546 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] searchbyfrom@example.com; search by from (address) (inbox unread)"\r
547 -\r
548 -printf " Search by from: (name)...\t\t\t"\r
549 -add_message '[subject]="search by from (name)"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[from]="Search By From Name <test@example.com>"'\r
550 -output=$($NOTMUCH search from:'Search By From Name' | notmuch_search_sanitize)\r
551 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Search By From Name; search by from (name) (inbox unread)"\r
552 -\r
553 -printf " Search by to: (address)...\t\t\t"\r
554 -add_message '[subject]="search by to (address)"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' [to]=searchbyto@example.com\r
555 -output=$($NOTMUCH search to:searchbyto@example.com | notmuch_search_sanitize)\r
556 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (address) (inbox unread)"\r
557 -\r
558 -printf " Search by to: (name)...\t\t\t"\r
559 -add_message '[subject]="search by to (name)"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[to]="Search By To Name <test@example.com>"'\r
560 -output=$($NOTMUCH search to:'Search By To Name' | notmuch_search_sanitize)\r
561 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unread)"\r
562 -\r
563 -printf " Search by subject: (phrase)...\t\t\t"\r
564 -add_message '[subject]="subject search test (phrase)"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
565 -add_message '[subject]="this phrase should not match the subject search test"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
566 -output=$($NOTMUCH search 'subject:\"subject search test (phrase)\"' | notmuch_search_sanitize)\r
567 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subject search test (phrase) (inbox unread)"\r
568 -\r
569 -printf " Search for all messages (\"*\"):...\t\t"\r
570 -output=$($NOTMUCH search '*' | notmuch_search_sanitize)\r
571 -pass_if_equal "$output" "thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Test message #6 (inbox unread)\r
572 -thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; Test message #14 (inbox unread)\r
573 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)\r
574 -thread:XXX   2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)\r
575 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)\r
576 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)\r
577 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)\r
578 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)\r
579 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)\r
580 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (phrase) (inbox unread)\r
581 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; negative result (inbox unread)\r
582 -thread:XXX   2000-01-01 [1/1] searchbyfrom@example.com; search by from (address) (inbox unread)\r
583 -thread:XXX   2000-01-01 [1/1] Search By From Name; search by from (name) (inbox unread)\r
584 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (address) (inbox unread)\r
585 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unread)\r
586 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subject search test (phrase) (inbox unread)\r
587 -thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; this phrase should not match the subject search test (inbox unread)"\r
588 -\r
589 -printf " Search body (utf-8):...\t\t\t"\r
590 -add_message '[subject]="utf8-message-body-subject"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="message body utf8: bödý"'\r
591 -output=$($NOTMUCH search 'bödý' | notmuch_search_sanitize)\r
592 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-message-body-subject (inbox unread)"\r
593 -\r
594 -printf "\nTesting --format=json output:\n"\r
595 -\r
596 -printf " Show message: json...\t\t\t\t"\r
597 -add_message '[subject]="json-show-subject"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="json-show-message"'\r
598 -output=$($NOTMUCH show --format=json 'json-show-message')\r
599 -pass_if_equal "$output" '[[[{"id": "'${gen_msg_id}'", "match": true, "filename": "'${gen_msg_filename}'", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","unread"], "headers": {"Subject": "json-show-subject", "From": "Notmuch Test Suite <test_suite@notmuchmail.org>", "To": "Notmuch Test Suite <test_suite@notmuchmail.org>", "Cc": "", "Bcc": "", "Date": "Sat, 01 Jan 2000 12:00:00 -0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "json-show-message\n"}]}, []]]]'\r
600 -\r
601 -printf " Search message: json...\t\t\t"\r
602 -add_message '[subject]="json-search-subject"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="json-search-message"'\r
603 -output=$($NOTMUCH search --format=json 'json-search-message' | notmuch_search_sanitize)\r
604 -pass_if_equal "$output" '[{"thread": "XXX",\r
605 -"timestamp": 946728000,\r
606 -"matched": 1,\r
607 -"total": 1,\r
608 -"authors": "Notmuch Test Suite",\r
609 -"subject": "json-search-subject",\r
610 -"tags": ["inbox", "unread"]}]'\r
611 -\r
612 -printf " Search by subject (utf-8):...\t\t\t"\r
613 -add_message [subject]=utf8-sübjéct '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
614 -output=$($NOTMUCH search subject:utf8-sübjéct | notmuch_search_sanitize)\r
615 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-sübjéct (inbox unread)"\r
616 -\r
617 -printf " Show message: json, utf-8...\t\t\t"\r
618 -add_message '[subject]="json-show-utf8-body-sübjéct"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="jsön-show-méssage"'\r
619 -output=$($NOTMUCH show --format=json 'jsön-show-méssage')\r
620 -pass_if_equal "$output" '[[[{"id": "'${gen_msg_id}'", "match": true, "filename": "'${gen_msg_filename}'", "timestamp": 946728000, "date_relative": "2000-01-01", "tags": ["inbox","unread"], "headers": {"Subject": "json-show-utf8-body-sübjéct", "From": "Notmuch Test Suite <test_suite@notmuchmail.org>", "To": "Notmuch Test Suite <test_suite@notmuchmail.org>", "Cc": "", "Bcc": "", "Date": "Sat, 01 Jan 2000 12:00:00 -0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "jsön-show-méssage\n"}]}, []]]]'\r
621 -\r
622 -printf " Search message: json, utf-8...\t\t\t"\r
623 -add_message '[subject]="json-search-utf8-body-sübjéct"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' '[body]="jsön-search-méssage"'\r
624 -output=$($NOTMUCH search --format=json 'jsön-search-méssage' | notmuch_search_sanitize)\r
625 -pass_if_equal "$output" '[{"thread": "XXX",\r
626 -"timestamp": 946728000,\r
627 -"matched": 1,\r
628 -"total": 1,\r
629 -"authors": "Notmuch Test Suite",\r
630 -"subject": "json-search-utf8-body-sübjéct",\r
631 -"tags": ["inbox", "unread"]}]'\r
632 -\r
633 -printf "\nTesting naming of threads with changing subject:\n"\r
634 -add_message '[subject]="thread-naming: Initial thread subject"' \\r
635 -            '[date]="Fri, 05 Jan 2001 15:43:56 -0800"'\r
636 -first=${gen_msg_cnt}\r
637 -parent=${gen_msg_id}\r
638 -add_message '[subject]="thread-naming: Older changed subject"' \\r
639 -            '[date]="Sat, 06 Jan 2001 15:43:56 -0800"' \\r
640 -            "[in-reply-to]=\<$parent\>"\r
641 -add_message '[subject]="thread-naming: Newer changed subject"' \\r
642 -            '[date]="Sun, 07 Jan 2001 15:43:56 -0800"' \\r
643 -            "[in-reply-to]=\<$parent\>"\r
644 -add_message '[subject]="thread-naming: Final thread subject"' \\r
645 -            '[date]="Mon, 08 Jan 2001 15:43:56 -0800"' \\r
646 -            "[in-reply-to]=\<$parent\>"\r
647 -final=${gen_msg_id}\r
648 -\r
649 -printf " Initial thread name (oldest-first search)...\t"\r
650 -output=$($NOTMUCH search --sort=oldest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
651 -pass_if_equal "$output" "thread:XXX   2001-01-05 [4/4] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
652 -\r
653 -printf " Initial thread name (newest-first search)...\t"\r
654 -output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
655 -pass_if_equal "$output" "thread:XXX   2001-01-08 [4/4] Notmuch Test Suite; thread-naming: Final thread subject (inbox unread)"\r
656 -\r
657 -# Remove oldest and newest messages from search results\r
658 -$NOTMUCH tag -inbox id:$parent or id:$final\r
659 -\r
660 -printf " Changed thread name (oldest-first search)...\t"\r
661 -output=$($NOTMUCH search --sort=oldest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
662 -pass_if_equal "$output" "thread:XXX   2001-01-06 [2/4] Notmuch Test Suite; thread-naming: Older changed subject (inbox unread)"\r
663 -\r
664 -printf " Changed thread name (newest-first search)...\t"\r
665 -output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
666 -pass_if_equal "$output" "thread:XXX   2001-01-07 [2/4] Notmuch Test Suite; thread-naming: Newer changed subject (inbox unread)"\r
667 -\r
668 -printf " Ignore added reply prefix (Re:)...\t\t"\r
669 -add_message '[subject]="Re: thread-naming: Initial thread subject"' \\r
670 -            '[date]="Tue, 09 Jan 2001 15:43:45 -0800"' \\r
671 -            "[in-reply-to]=\<$parent\>"\r
672 -output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
673 -pass_if_equal "$output" "thread:XXX   2001-01-09 [3/5] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
674 -\r
675 -printf " Ignore added reply prefix (Aw:)...\t\t"\r
676 -add_message '[subject]="Aw: thread-naming: Initial thread subject"' \\r
677 -            '[date]="Wed, 10 Jan 2001 15:43:45 -0800"' \\r
678 -            "[in-reply-to]=\<$parent\>"\r
679 -output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
680 -pass_if_equal "$output" "thread:XXX   2001-01-10 [4/6] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
681 -\r
682 -printf " Ignore added reply prefix (Vs:)...\t\t"\r
683 -add_message '[subject]="Vs: thread-naming: Initial thread subject"' \\r
684 -            '[date]="Thu, 11 Jan 2001 15:43:45 -0800"' \\r
685 -            "[in-reply-to]=\<$parent\>"\r
686 -output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
687 -pass_if_equal "$output" "thread:XXX   2001-01-11 [5/7] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
688 -\r
689 -printf " Ignore added reply prefix (Sv:)...\t\t"\r
690 -add_message '[subject]="Sv: thread-naming: Initial thread subject"' \\r
691 -            '[date]="Fri, 12 Jan 2001 15:43:45 -0800"' \\r
692 -            "[in-reply-to]=\<$parent\>"\r
693 -output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize)\r
694 -pass_if_equal "$output" "thread:XXX   2001-01-12 [6/8] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
695 -\r
696 -printf " Test order of messages in \"notmuch show\"\t"\r
697 -output=$($NOTMUCH show thread-naming | notmuch_show_sanitize)\r
698 -pass_if_equal "$output" "\f\r
699 message{ id:msg-$(printf "%03d" $first)@notmuch-test-suite depth:0 match:1 filename:/XXX/mail/msg-$(printf "%03d" $first)\r
700 -\f\r
701 header{\r
702 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (unread)\r
703 -Subject: thread-naming: Initial thread subject\r
704 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
705 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
706 -Date: Fri, 05 Jan 2001 15:43:56 -0800\r
707 -\f\r
708 header}\r
709 -\f\r
710 body{\r
711 -\f\r
712 part{ ID: 1, Content-type: text/plain\r
713 -This is just a test message (#$first)\r
714 -\f\r
715 part}\r
716 -\f\r
717 body}\r
718 -\f\r
719 message}\r
720 -\f\r
721 message{ id:msg-$(printf "%03d" $((first + 1)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 1)))\r
722 -\f\r
723 header{\r
724 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-06) (inbox unread)\r
725 -Subject: thread-naming: Older changed subject\r
726 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
727 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
728 -Date: Sat, 06 Jan 2001 15:43:56 -0800\r
729 -\f\r
730 header}\r
731 -\f\r
732 body{\r
733 -\f\r
734 part{ ID: 1, Content-type: text/plain\r
735 -This is just a test message (#$((first + 1)))\r
736 -\f\r
737 part}\r
738 -\f\r
739 body}\r
740 -\f\r
741 message}\r
742 -\f\r
743 message{ id:msg-$(printf "%03d" $((first + 2)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 2)))\r
744 -\f\r
745 header{\r
746 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-07) (inbox unread)\r
747 -Subject: thread-naming: Newer changed subject\r
748 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
749 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
750 -Date: Sun, 07 Jan 2001 15:43:56 -0800\r
751 -\f\r
752 header}\r
753 -\f\r
754 body{\r
755 -\f\r
756 part{ ID: 1, Content-type: text/plain\r
757 -This is just a test message (#$((first + 2)))\r
758 -\f\r
759 part}\r
760 -\f\r
761 body}\r
762 -\f\r
763 message}\r
764 -\f\r
765 message{ id:msg-$(printf "%03d" $((first + 3)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 3)))\r
766 -\f\r
767 header{\r
768 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-08) (unread)\r
769 -Subject: thread-naming: Final thread subject\r
770 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
771 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
772 -Date: Mon, 08 Jan 2001 15:43:56 -0800\r
773 -\f\r
774 header}\r
775 -\f\r
776 body{\r
777 -\f\r
778 part{ ID: 1, Content-type: text/plain\r
779 -This is just a test message (#$((first + 3)))\r
780 -\f\r
781 part}\r
782 -\f\r
783 body}\r
784 -\f\r
785 message}\r
786 -\f\r
787 message{ id:msg-$(printf "%03d" $((first + 4)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 4)))\r
788 -\f\r
789 header{\r
790 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-09) (inbox unread)\r
791 -Subject: Re: thread-naming: Initial thread subject\r
792 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
793 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
794 -Date: Tue, 09 Jan 2001 15:43:45 -0800\r
795 -\f\r
796 header}\r
797 -\f\r
798 body{\r
799 -\f\r
800 part{ ID: 1, Content-type: text/plain\r
801 -This is just a test message (#$((first + 4)))\r
802 -\f\r
803 part}\r
804 -\f\r
805 body}\r
806 -\f\r
807 message}\r
808 -\f\r
809 message{ id:msg-$(printf "%03d" $((first + 5)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 5)))\r
810 -\f\r
811 header{\r
812 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-10) (inbox unread)\r
813 -Subject: Aw: thread-naming: Initial thread subject\r
814 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
815 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
816 -Date: Wed, 10 Jan 2001 15:43:45 -0800\r
817 -\f\r
818 header}\r
819 -\f\r
820 body{\r
821 -\f\r
822 part{ ID: 1, Content-type: text/plain\r
823 -This is just a test message (#$((first + 5)))\r
824 -\f\r
825 part}\r
826 -\f\r
827 body}\r
828 -\f\r
829 message}\r
830 -\f\r
831 message{ id:msg-$(printf "%03d" $((first + 6)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 6)))\r
832 -\f\r
833 header{\r
834 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-11) (inbox unread)\r
835 -Subject: Vs: thread-naming: Initial thread subject\r
836 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
837 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
838 -Date: Thu, 11 Jan 2001 15:43:45 -0800\r
839 -\f\r
840 header}\r
841 -\f\r
842 body{\r
843 -\f\r
844 part{ ID: 1, Content-type: text/plain\r
845 -This is just a test message (#$((first + 6)))\r
846 -\f\r
847 part}\r
848 -\f\r
849 body}\r
850 -\f\r
851 message}\r
852 -\f\r
853 message{ id:msg-$(printf "%03d" $((first + 7)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 7)))\r
854 -\f\r
855 header{\r
856 -Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-12) (inbox unread)\r
857 -Subject: Sv: thread-naming: Initial thread subject\r
858 -From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
859 -To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
860 -Date: Fri, 12 Jan 2001 15:43:45 -0800\r
861 -\f\r
862 header}\r
863 -\f\r
864 body{\r
865 -\f\r
866 part{ ID: 1, Content-type: text/plain\r
867 -This is just a test message (#$((first + 7)))\r
868 -\f\r
869 part}\r
870 -\f\r
871 body}\r
872 -\f\r
873 message}"\r
874 -\r
875 -printf "\nTesting \"notmuch reply\" in several variations:\n"\r
876 -\r
877 -printf " Basic reply...\t\t\t\t\t"\r
878 -add_message '[from]="Sender <sender@example.com>"' \\r
879 -             [to]=test_suite@notmuchmail.org \\r
880 -             [subject]=notmuch-reply-test \\r
881 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
882 -            '[body]="basic reply test"'\r
883 -\r
884 -output=$($NOTMUCH reply id:${gen_msg_id})\r
885 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
886 -Subject: Re: notmuch-reply-test\r
887 -To: Sender <sender@example.com>\r
888 -Bcc: test_suite@notmuchmail.org\r
889 -In-Reply-To: <${gen_msg_id}>\r
890 -References: <${gen_msg_id}>\r
891 -\r
892 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
893 -> basic reply test"\r
894 -\r
895 -printf " Multiple recipients...\t\t\t\t"\r
896 -add_message '[from]="Sender <sender@example.com>"' \\r
897 -            '[to]="test_suite@notmuchmail.org, Someone Else <someone@example.com>"' \\r
898 -             [subject]=notmuch-reply-test \\r
899 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
900 -            '[body]="Multiple recipients"'\r
901 -\r
902 -output=$($NOTMUCH reply id:${gen_msg_id})\r
903 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
904 -Subject: Re: notmuch-reply-test\r
905 -To: Sender <sender@example.com>, Someone Else <someone@example.com>\r
906 -Bcc: test_suite@notmuchmail.org\r
907 -In-Reply-To: <${gen_msg_id}>\r
908 -References: <${gen_msg_id}>\r
909 -\r
910 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
911 -> Multiple recipients"\r
912 -\r
913 -printf " Reply with CC...\t\t\t\t"\r
914 -add_message '[from]="Sender <sender@example.com>"' \\r
915 -             [to]=test_suite@notmuchmail.org \\r
916 -            '[cc]="Other Parties <cc@example.com>"' \\r
917 -             [subject]=notmuch-reply-test \\r
918 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
919 -            '[body]="reply with CC"'\r
920 -\r
921 -output=$($NOTMUCH reply id:${gen_msg_id})\r
922 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
923 -Subject: Re: notmuch-reply-test\r
924 -To: Sender <sender@example.com>\r
925 -Cc: Other Parties <cc@example.com>\r
926 -Bcc: test_suite@notmuchmail.org\r
927 -In-Reply-To: <${gen_msg_id}>\r
928 -References: <${gen_msg_id}>\r
929 -\r
930 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
931 -> reply with CC"\r
932 -\r
933 -printf " Reply from alternate address...\t\t"\r
934 -add_message '[from]="Sender <sender@example.com>"' \\r
935 -             [to]=test_suite_other@notmuchmail.org \\r
936 -             [subject]=notmuch-reply-test \\r
937 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
938 -            '[body]="reply from alternate address"'\r
939 -\r
940 -output=$($NOTMUCH reply id:${gen_msg_id})\r
941 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
942 -Subject: Re: notmuch-reply-test\r
943 -To: Sender <sender@example.com>\r
944 -Bcc: test_suite@notmuchmail.org\r
945 -In-Reply-To: <${gen_msg_id}>\r
946 -References: <${gen_msg_id}>\r
947 -\r
948 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
949 -> reply from alternate address"\r
950 -\r
951 -printf " Support for Reply-To...\t\t\t"\r
952 -add_message '[from]="Sender <sender@example.com>"' \\r
953 -             [to]=test_suite@notmuchmail.org \\r
954 -             [subject]=notmuch-reply-test \\r
955 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
956 -            '[body]="support for reply-to"' \\r
957 -            '[reply-to]="Sender <elsewhere@example.com>"'\r
958 -\r
959 -output=$($NOTMUCH reply id:${gen_msg_id})\r
960 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
961 -Subject: Re: notmuch-reply-test\r
962 -To: Sender <elsewhere@example.com>\r
963 -Bcc: test_suite@notmuchmail.org\r
964 -In-Reply-To: <${gen_msg_id}>\r
965 -References: <${gen_msg_id}>\r
966 -\r
967 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
968 -> support for reply-to"\r
969 -\r
970 -printf " Un-munging Reply-To...\t\t\t\t"\r
971 -add_message '[from]="Sender <sender@example.com>"' \\r
972 -            '[to]="Some List <list@example.com>"' \\r
973 -             [subject]=notmuch-reply-test \\r
974 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
975 -            '[body]="Un-munging Reply-To"' \\r
976 -            '[reply-to]="Evil Munging List <list@example.com>"'\r
977 -\r
978 -output=$($NOTMUCH reply id:${gen_msg_id})\r
979 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
980 -Subject: Re: notmuch-reply-test\r
981 -To: Sender <sender@example.com>, Some List <list@example.com>\r
982 -Bcc: test_suite@notmuchmail.org\r
983 -In-Reply-To: <${gen_msg_id}>\r
984 -References: <${gen_msg_id}>\r
985 -\r
986 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
987 -> Un-munging Reply-To"\r
988 -\r
989 -printf "\nTesting handling of uuencoded data:\n"\r
990 -\r
991 -add_message [subject]=uuencodetest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' \\r
992 -'[body]="This message is used to ensure that notmuch correctly handles a\r
993 -message containing a block of uuencoded data. First, we have a marker\r
994 -this content beforeuudata . Then we beging the uunencoded data itself:\r
995 -\r
996 -begin 644 bogus-uuencoded-data\r
997 -M0123456789012345678901234567890123456789012345678901234567890\r
998 -MOBVIOUSLY, THIS IS NOT ANY SORT OF USEFUL UUNECODED DATA.    \r
999 -MINSTEAD THIS IS JUST A WAY TO ENSURE THAT THIS BLOCK OF DATA \r
1000 -MIS CORRECTLY IGNORED WHEN NOTMUCH CREATES ITS INDEX. SO WE   \r
1001 -MINCLUDE A DURINGUUDATA MARKER THAT SHOULD NOT RESULT IN ANY  \r
1002 -MSEARCH RESULT.                                               \r
1003 -\`\r
1004 -end\r
1005 -\r
1006 -Finally, we have our afteruudata marker as well."'\r
1007 -\r
1008 -printf " Ensure content before uu data is indexed...\t"\r
1009 -output=$($NOTMUCH search beforeuudata | notmuch_search_sanitize)\r
1010 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; uuencodetest (inbox unread)"\r
1011 -printf " Ensure uu data is not indexed...\t\t"\r
1012 -output=$($NOTMUCH search DURINGUUDATA | notmuch_search_sanitize)\r
1013 -pass_if_equal "$output" ""\r
1014 -printf " Ensure content after uu data is indexed...\t"\r
1015 -output=$($NOTMUCH search afteruudata | notmuch_search_sanitize)\r
1016 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; uuencodetest (inbox unread)"\r
1017 -\r
1018 -printf "\nTesting \"notmuch dump\" and \"notmuch restore\":\n"\r
1019 -\r
1020 -printf " Dumping all tags...\t\t\t\t"\r
1021 -$NOTMUCH dump dump.expected\r
1022 -pass_if_equal "$?" "0"\r
1023 -\r
1024 -printf " Clearing all tags...\t\t\t\t"\r
1025 -sed -e 's/(\([^(]*\))$/()/' < dump.expected > clear.expected\r
1026 -$NOTMUCH restore clear.expected\r
1027 -$NOTMUCH dump clear.actual\r
1028 -pass_if_equal "$(< clear.actual)" "$(< clear.expected)"\r
1029 -\r
1030 -printf " Restoring original tags...\t\t\t"\r
1031 -$NOTMUCH restore dump.expected\r
1032 -$NOTMUCH dump dump.actual\r
1033 -pass_if_equal "$(< dump.actual)" "$(< dump.expected)"\r
1034 -\r
1035 -printf " Restore with nothing to do...\t\t\t"\r
1036 -$NOTMUCH restore dump.expected\r
1037 -pass_if_equal "$?" "0"\r
1038 -\r
1039 -printf "\nTesting threading when messages received out of order:\n"\r
1040 -printf " Adding initial child message...\t\t"\r
1041 -generate_message [body]=foo '[in-reply-to]=\<parent-id\>' [subject]=brokenthreadtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
1042 -output=$(NOTMUCH_NEW)\r
1043 -pass_if_equal "$output" "Added 1 new message to the database."\r
1044 -printf " Searching returns the message...\t\t"\r
1045 -output=$($NOTMUCH search foo | notmuch_search_sanitize)\r
1046 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; brokenthreadtest (inbox unread)"\r
1047 -printf " Adding second child message...\t\t\t"\r
1048 -generate_message [body]=foo '[in-reply-to]=\<parent-id\>' [subject]=brokenthreadtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
1049 -output=$(NOTMUCH_NEW)\r
1050 -pass_if_equal "$output" "Added 1 new message to the database."\r
1051 -printf " Searching returns both messages in one thread..."\r
1052 -output=$($NOTMUCH search foo | notmuch_search_sanitize)\r
1053 -pass_if_equal "$output" "thread:XXX   2000-01-01 [2/2] Notmuch Test Suite; brokenthreadtest (inbox unread)"\r
1054 -printf " Adding parent message...\t\t\t"\r
1055 -generate_message [body]=foo [id]=parent-id [subject]=brokenthreadtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
1056 -output=$(NOTMUCH_NEW)\r
1057 -pass_if_equal "$output" "Added 1 new message to the database."\r
1058 -printf " Searching returns all three messages in one thread..."\r
1059 -output=$($NOTMUCH search foo | notmuch_search_sanitize)\r
1060 -pass_if_equal "$output" "thread:XXX   2000-01-01 [3/3] Notmuch Test Suite; brokenthreadtest (inbox unread)"\r
1061 -\r
1062 -printf "\nTesting author reordering;\n"\r
1063 -printf " Adding parent message...\t\t\t"\r
1064 -generate_message [body]=findme [id]=new-parent-id [subject]=author-reorder-threadtest '[from]="User <user@example.com>"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
1065 -output=$(NOTMUCH_NEW)\r
1066 -pass_if_equal "$output" "Added 1 new message to the database."\r
1067 -printf " Adding initial child message...\t\t"\r
1068 -generate_message [body]=findme '[in-reply-to]=\<new-parent-id\>' [subject]=author-reorder-threadtest '[from]="User1 <user1@example.com>"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
1069 -output=$(NOTMUCH_NEW)\r
1070 -pass_if_equal "$output" "Added 1 new message to the database."\r
1071 -printf " Adding second child message...\t\t\t"\r
1072 -generate_message [body]=findme '[in-reply-to]=\<new-parent-id\>' [subject]=author-reorder-threadtest '[from]="User2 <user2@example.com>"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
1073 -output=$(NOTMUCH_NEW)\r
1074 -pass_if_equal "$output" "Added 1 new message to the database."\r
1075 -printf " Searching when all three messages match...\t"\r
1076 -output=$($NOTMUCH search findme | notmuch_search_sanitize)\r
1077 -pass_if_equal "$output" "thread:XXX   2000-01-01 [3/3] User, User1, User2; author-reorder-threadtest (inbox unread)"\r
1078 -printf " Searching when two messages match...\t\t"\r
1079 -output=$($NOTMUCH search User1 or User2 | notmuch_search_sanitize)\r
1080 -pass_if_equal "$output" "thread:XXX   2000-01-01 [2/3] User1, User2| User; author-reorder-threadtest (inbox unread)"\r
1081 -printf " Searching when only one message matches...\t"\r
1082 -output=$($NOTMUCH search User2 | notmuch_search_sanitize)\r
1083 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/3] User2| User, User1; author-reorder-threadtest (inbox unread)"\r
1084 -printf " Searching when only first message matches...\t"\r
1085 -output=$($NOTMUCH search User | notmuch_search_sanitize)\r
1086 -pass_if_equal "$output" "thread:XXX   2000-01-01 [1/3] User| User1, User2; author-reorder-threadtest (inbox unread)"\r
1087 -\r
1088 -printf "\nTesting From line heuristics (with multiple configured addresses):\n"\r
1089 -printf " Magic from guessing (nothing to go on)...\t"\r
1090 -add_message '[from]="Sender <sender@example.com>"' \\r
1091 -             [to]=mailinglist@notmuchmail.org \\r
1092 -             [subject]=notmuch-reply-test \\r
1093 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1094 -            '[body]="from guessing test"'\r
1095 -\r
1096 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1097 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1098 -Subject: Re: notmuch-reply-test\r
1099 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1100 -Bcc: test_suite@notmuchmail.org\r
1101 -In-Reply-To: <${gen_msg_id}>\r
1102 -References: <${gen_msg_id}>\r
1103 -\r
1104 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1105 -> from guessing test"\r
1106 -\r
1107 -printf " Magic from guessing (Envelope-to:)...\t\t"\r
1108 -add_message '[from]="Sender <sender@example.com>"' \\r
1109 -             [to]=mailinglist@notmuchmail.org \\r
1110 -             [subject]=notmuch-reply-test \\r
1111 -            '[header]="Envelope-To: test_suite_other@notmuchmail.org"' \\r
1112 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1113 -            '[body]="from guessing test"'\r
1114 -\r
1115 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1116 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
1117 -Subject: Re: notmuch-reply-test\r
1118 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1119 -Bcc: test_suite@notmuchmail.org\r
1120 -In-Reply-To: <${gen_msg_id}>\r
1121 -References: <${gen_msg_id}>\r
1122 -\r
1123 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1124 -> from guessing test"\r
1125 -\r
1126 -printf " Magic from guessing (X-Original-To:)...\t"\r
1127 -add_message '[from]="Sender <sender@example.com>"' \\r
1128 -             [to]=mailinglist@notmuchmail.org \\r
1129 -             [subject]=notmuch-reply-test \\r
1130 -            '[header]="X-Original-To: test_suite_other@notmuchmail.org"' \\r
1131 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1132 -            '[body]="from guessing test"'\r
1133 -\r
1134 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1135 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
1136 -Subject: Re: notmuch-reply-test\r
1137 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1138 -Bcc: test_suite@notmuchmail.org\r
1139 -In-Reply-To: <${gen_msg_id}>\r
1140 -References: <${gen_msg_id}>\r
1141 -\r
1142 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1143 -> from guessing test"\r
1144 -\r
1145 -printf " Magic from guessing (Received: .. for ..)...\t"\r
1146 -add_message '[from]="Sender <sender@example.com>"' \\r
1147 -             [to]=mailinglist@notmuchmail.org \\r
1148 -             [subject]=notmuch-reply-test \\r
1149 -            '[header]="Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
1150 -        by mail.notmuchmail.org (some MTA) with ESMTP id 12345678\\r
1151 -        for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 07:54:51 -0400 (EDT)"' \\r
1152 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1153 -            '[body]="from guessing test"'\r
1154 -\r
1155 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1156 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
1157 -Subject: Re: notmuch-reply-test\r
1158 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1159 -Bcc: test_suite@notmuchmail.org\r
1160 -In-Reply-To: <${gen_msg_id}>\r
1161 -References: <${gen_msg_id}>\r
1162 -\r
1163 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1164 -> from guessing test"\r
1165 -\r
1166 -printf " Magic from guessing (Received: domain)...\t"\r
1167 -add_message '[from]="Sender <sender@example.com>"' \\r
1168 -             [to]=mailinglist@notmuchmail.org \\r
1169 -             [subject]=notmuch-reply-test \\r
1170 -            '[header]="Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
1171 -        by mail.otherdomain.org (some MTA) with ESMTP id 12345678\\r
1172 -        Sat, 10 Apr 2010 07:54:51 -0400 (EDT)"' \\r
1173 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1174 -            '[body]="from guessing test"'\r
1175 -\r
1176 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1177 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@otherdomain.org>\r
1178 -Subject: Re: notmuch-reply-test\r
1179 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1180 -Bcc: test_suite@notmuchmail.org\r
1181 -In-Reply-To: <${gen_msg_id}>\r
1182 -References: <${gen_msg_id}>\r
1183 -\r
1184 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1185 -> from guessing test"\r
1186 -\r
1187 -\r
1188 -printf "\nTesting From line heuristics (with single configured address):\n"\r
1189 -sed -i -e 's/^other_email.*//' ${NOTMUCH_CONFIG}\r
1190 -\r
1191 -printf " Magic from guessing (nothing to go on)...\t"\r
1192 -add_message '[from]="Sender <sender@example.com>"' \\r
1193 -             [to]=mailinglist@notmuchmail.org \\r
1194 -             [subject]=notmuch-reply-test \\r
1195 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1196 -            '[body]="from guessing test"'\r
1197 -\r
1198 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1199 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1200 -Subject: Re: notmuch-reply-test\r
1201 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1202 -Bcc: test_suite@notmuchmail.org\r
1203 -In-Reply-To: <${gen_msg_id}>\r
1204 -References: <${gen_msg_id}>\r
1205 -\r
1206 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1207 -> from guessing test"\r
1208 -\r
1209 -printf " Magic from guessing (Envelope-to:)...\t\t"\r
1210 -add_message '[from]="Sender <sender@example.com>"' \\r
1211 -             [to]=mailinglist@notmuchmail.org \\r
1212 -             [subject]=notmuch-reply-test \\r
1213 -            '[header]="Envelope-To: test_suite_other@notmuchmail.org"' \\r
1214 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1215 -            '[body]="from guessing test"'\r
1216 -\r
1217 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1218 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1219 -Subject: Re: notmuch-reply-test\r
1220 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1221 -Bcc: test_suite@notmuchmail.org\r
1222 -In-Reply-To: <${gen_msg_id}>\r
1223 -References: <${gen_msg_id}>\r
1224 -\r
1225 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1226 -> from guessing test"\r
1227 -\r
1228 -printf " Magic from guessing (X-Original-To:)...\t"\r
1229 -add_message '[from]="Sender <sender@example.com>"' \\r
1230 -             [to]=mailinglist@notmuchmail.org \\r
1231 -             [subject]=notmuch-reply-test \\r
1232 -            '[header]="X-Original-To: test_suite_other@notmuchmail.org"' \\r
1233 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1234 -            '[body]="from guessing test"'\r
1235 -\r
1236 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1237 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1238 -Subject: Re: notmuch-reply-test\r
1239 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1240 -Bcc: test_suite@notmuchmail.org\r
1241 -In-Reply-To: <${gen_msg_id}>\r
1242 -References: <${gen_msg_id}>\r
1243 -\r
1244 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1245 -> from guessing test"\r
1246 -\r
1247 -printf " Magic from guessing (Received: .. for ..)...\t"\r
1248 -add_message '[from]="Sender <sender@example.com>"' \\r
1249 -             [to]=mailinglist@notmuchmail.org \\r
1250 -             [subject]=notmuch-reply-test \\r
1251 -            '[header]="Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
1252 -        by mail.notmuchmail.org (some MTA) with ESMTP id 12345678\\r
1253 -        for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 07:54:51 -0400 (EDT)"' \\r
1254 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1255 -            '[body]="from guessing test"'\r
1256 -\r
1257 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1258 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1259 -Subject: Re: notmuch-reply-test\r
1260 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1261 -Bcc: test_suite@notmuchmail.org\r
1262 -In-Reply-To: <${gen_msg_id}>\r
1263 -References: <${gen_msg_id}>\r
1264 -\r
1265 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1266 -> from guessing test"\r
1267 -\r
1268 -printf " Magic from guessing (Received: domain)...\t"\r
1269 -add_message '[from]="Sender <sender@example.com>"' \\r
1270 -             [to]=mailinglist@notmuchmail.org \\r
1271 -             [subject]=notmuch-reply-test \\r
1272 -            '[header]="Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
1273 -        by mail.otherdomain.org (some MTA) with ESMTP id 12345678\\r
1274 -        Sat, 10 Apr 2010 07:54:51 -0400 (EDT)"' \\r
1275 -            '[date]="Tue, 05 Jan 2010 15:43:56 -0800"' \\r
1276 -            '[body]="from guessing test"'\r
1277 -\r
1278 -output=$($NOTMUCH reply id:${gen_msg_id})\r
1279 -pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1280 -Subject: Re: notmuch-reply-test\r
1281 -To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
1282 -Bcc: test_suite@notmuchmail.org\r
1283 -In-Reply-To: <${gen_msg_id}>\r
1284 -References: <${gen_msg_id}>\r
1285 -\r
1286 -On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1287 -> from guessing test"\r
1288 -\r
1289 -echo ""\r
1290 -echo "Notmuch test suite complete."\r
1291 -\r
1292 -if [ "$test_failures" = "0" ]; then\r
1293 -    echo "All $tests tests passed."\r
1294 -    rm -rf ${TEST_DIR}\r
1295 -else\r
1296 -    echo "$test_failures/$tests tests failed. The failures can be investigated in:"\r
1297 -    echo "${TEST_DIR}"\r
1298 -fi\r
1299 -\r
1300 -echo ""\r
1301 -\r
1302 -exit $test_failures\r
1303 +cd $(dirname $0)\r
1304 +make\r
1305 diff --git a/test/t0000-basic.sh b/test/t0000-basic.sh\r
1306 index caade68..511e200 100755\r
1307 --- a/test/t0000-basic.sh\r
1308 +++ b/test/t0000-basic.sh\r
1309 @@ -1,4 +1,4 @@\r
1310 -#!/bin/sh\r
1311 +#!/bin/bash\r
1312  #\r
1313  # Copyright (c) 2005 Junio C Hamano\r
1314  #\r
1315 diff --git a/test/t0001-new.sh b/test/t0001-new.sh\r
1316 new file mode 100755\r
1317 index 0000000..97726e7\r
1318 --- /dev/null\r
1319 +++ b/test/t0001-new.sh\r
1320 @@ -0,0 +1,164 @@\r
1321 +#!/bin/bash\r
1322 +test_description="\"notmuch new\" in several variations"\r
1323 +. ./test-lib.sh\r
1324 +test_expect_success "No new messages" '\r
1325 +output=$(NOTMUCH_NEW) &&\r
1326 +pass_if_equal "$output" "No new mail."\r
1327 +\r
1328 +'\r
1329 +test_expect_success "Single new message" '\r
1330 +generate_message &&\r
1331 +output=$(NOTMUCH_NEW) &&\r
1332 +pass_if_equal "$output" "Added 1 new message to the database."\r
1333 +\r
1334 +'\r
1335 +test_expect_success "Multiple new messages" '\r
1336 +generate_message &&\r
1337 +generate_message &&\r
1338 +output=$(NOTMUCH_NEW) &&\r
1339 +pass_if_equal "$output" "Added 2 new messages to the database."\r
1340 +\r
1341 +'\r
1342 +test_expect_success "No new messages (non-empty DB)" '\r
1343 +output=$(NOTMUCH_NEW) &&\r
1344 +pass_if_equal "$output" "No new mail."\r
1345 +\r
1346 +'\r
1347 +test_expect_success "New directories" '\r
1348 +rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&\r
1349 +mkdir "${MAIL_DIR}"/def &&\r
1350 +mkdir "${MAIL_DIR}"/ghi &&\r
1351 +generate_message [dir]=def &&\r
1352 +\r
1353 +output=$(NOTMUCH_NEW) &&\r
1354 +pass_if_equal "$output" "Added 1 new message to the database."\r
1355 +\r
1356 +'\r
1357 +test_expect_success "Alternate inode order" '\r
1358 +\r
1359 +rm -rf "${MAIL_DIR}"/.notmuch &&\r
1360 +mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc &&\r
1361 +rm "${MAIL_DIR}"/def/* &&\r
1362 +generate_message [dir]=abc &&\r
1363 +\r
1364 +output=$(NOTMUCH_NEW) &&\r
1365 +pass_if_equal "$output" "Added 1 new message to the database."\r
1366 +\r
1367 +'\r
1368 +test_expect_success "Message moved in" '\r
1369 +rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&\r
1370 +generate_message &&\r
1371 +tmp_msg_filename=tmp/"$gen_msg_filename" &&\r
1372 +mkdir -p "$(dirname "$tmp_msg_filename")" &&\r
1373 +mv "$gen_msg_filename" "$tmp_msg_filename" &&\r
1374 +increment_mtime "${MAIL_DIR}" &&\r
1375 +$NOTMUCH new > /dev/null &&\r
1376 +mv "$tmp_msg_filename" "$gen_msg_filename" &&\r
1377 +increment_mtime "${MAIL_DIR}" &&\r
1378 +output=$(NOTMUCH_NEW) &&\r
1379 +pass_if_equal "$output" "Added 1 new message to the database."\r
1380 +\r
1381 +'\r
1382 +test_expect_success "Renamed message" '\r
1383 +\r
1384 +generate_message &&\r
1385 +$NOTMUCH new > /dev/null &&\r
1386 +mv "$gen_msg_filename" "${gen_msg_filename}"-renamed &&\r
1387 +increment_mtime "${MAIL_DIR}" &&\r
1388 +output=$(NOTMUCH_NEW) &&\r
1389 +pass_if_equal "$output" "No new mail. Detected 1 file rename."\r
1390 +\r
1391 +'\r
1392 +test_expect_success "Deleted message" '\r
1393 +\r
1394 +rm "${gen_msg_filename}"-renamed &&\r
1395 +increment_mtime "${MAIL_DIR}" &&\r
1396 +output=$(NOTMUCH_NEW) &&\r
1397 +pass_if_equal "$output" "No new mail. Removed 1 message."\r
1398 +\r
1399 +'\r
1400 +test_expect_success "Renamed directory" '\r
1401 +\r
1402 +generate_message [dir]=dir &&\r
1403 +generate_message [dir]=dir &&\r
1404 +generate_message [dir]=dir &&\r
1405 +\r
1406 +$NOTMUCH new > /dev/null &&\r
1407 +\r
1408 +mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed &&\r
1409 +increment_mtime "${MAIL_DIR}" &&\r
1410 +\r
1411 +output=$(NOTMUCH_NEW) &&\r
1412 +pass_if_equal "$output" "No new mail. Detected 3 file renames."\r
1413 +\r
1414 +'\r
1415 +test_expect_success "Deleted directory" '\r
1416 +\r
1417 +rm -rf "${MAIL_DIR}"/dir-renamed &&\r
1418 +increment_mtime "${MAIL_DIR}" &&\r
1419 +\r
1420 +output=$(NOTMUCH_NEW) &&\r
1421 +pass_if_equal "$output" "No new mail. Removed 3 messages."\r
1422 +\r
1423 +'\r
1424 +test_expect_success "New directory (at end of list)" '\r
1425 +\r
1426 +generate_message [dir]=zzz &&\r
1427 +generate_message [dir]=zzz &&\r
1428 +generate_message [dir]=zzz &&\r
1429 +\r
1430 +output=$(NOTMUCH_NEW) &&\r
1431 +pass_if_equal "$output" "Added 3 new messages to the database."\r
1432 +\r
1433 +'\r
1434 +test_expect_success "Deleted directory (end of list)" '\r
1435 +\r
1436 +rm -rf "${MAIL_DIR}"/zzz &&\r
1437 +increment_mtime "${MAIL_DIR}" &&\r
1438 +\r
1439 +output=$(NOTMUCH_NEW) &&\r
1440 +pass_if_equal "$output" "No new mail. Removed 3 messages."\r
1441 +\r
1442 +'\r
1443 +test_expect_success "New symlink to directory" '\r
1444 +\r
1445 +rm -rf "${MAIL_DIR}"/.notmuch &&\r
1446 +mv "${MAIL_DIR}" "$PWD"/actual_maildir &&\r
1447 +\r
1448 +mkdir "${MAIL_DIR}" &&\r
1449 +ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink &&\r
1450 +\r
1451 +output=$(NOTMUCH_NEW) &&\r
1452 +pass_if_equal "$output" "Added 1 new message to the database."\r
1453 +\r
1454 +'\r
1455 +test_expect_success "New symlink to a file" '\r
1456 +generate_message &&\r
1457 +external_msg_filename="$PWD"/external/"$(basename "$gen_msg_filename")" &&\r
1458 +mkdir -p "$(dirname "$external_msg_filename")" &&\r
1459 +mv "$gen_msg_filename" "$external_msg_filename" &&\r
1460 +ln -s "$external_msg_filename" "$gen_msg_filename" &&\r
1461 +increment_mtime "${MAIL_DIR}" &&\r
1462 +output=$(NOTMUCH_NEW) &&\r
1463 +pass_if_equal "$output" "Added 1 new message to the database."\r
1464 +\r
1465 +'\r
1466 +test_expect_success "New two-level directory" '\r
1467 +\r
1468 +generate_message [dir]=two/levels &&\r
1469 +generate_message [dir]=two/levels &&\r
1470 +generate_message [dir]=two/levels &&\r
1471 +\r
1472 +output=$(NOTMUCH_NEW) &&\r
1473 +pass_if_equal "$output" "Added 3 new messages to the database."\r
1474 +\r
1475 +'\r
1476 +test_expect_success "Deleted two-level directory" '\r
1477 +\r
1478 +rm -rf "${MAIL_DIR}"/two &&\r
1479 +increment_mtime "${MAIL_DIR}" &&\r
1480 +\r
1481 +output=$(NOTMUCH_NEW) &&\r
1482 +pass_if_equal "$output" "No new mail. Removed 3 messages."\r
1483 +'\r
1484 +test_done\r
1485 diff --git a/test/t0002-search.sh b/test/t0002-search.sh\r
1486 new file mode 100755\r
1487 index 0000000..7de4d47\r
1488 --- /dev/null\r
1489 +++ b/test/t0002-search.sh\r
1490 @@ -0,0 +1,111 @@\r
1491 +#!/bin/bash\r
1492 +test_description="\"notmuch search\" in several variations"\r
1493 +. ./test-lib.sh\r
1494 +\r
1495 +test_expect_success "Search body" '\r
1496 +add_message "[subject]=\"body search\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [body]=bodysearchtest &&\r
1497 +output=$($NOTMUCH search bodysearchtest | notmuch_search_sanitize) &&\r
1498 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)"\r
1499 +\r
1500 +'\r
1501 +test_expect_success "Search by from:" '\r
1502 +add_message "[subject]=\"search by from\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [from]=searchbyfrom &&\r
1503 +output=$($NOTMUCH search from:searchbyfrom | notmuch_search_sanitize) &&\r
1504 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)"\r
1505 +\r
1506 +'\r
1507 +test_expect_success "Search by to:" '\r
1508 +add_message "[subject]=\"search by to\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [to]=searchbyto &&\r
1509 +output=$($NOTMUCH search to:searchbyto | notmuch_search_sanitize) &&\r
1510 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)"\r
1511 +\r
1512 +'\r
1513 +test_expect_success "Search by subject:" '\r
1514 +add_message [subject]=subjectsearchtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1515 +output=$($NOTMUCH search subject:subjectsearchtest | notmuch_search_sanitize) &&\r
1516 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)"\r
1517 +\r
1518 +'\r
1519 +test_expect_success "Search by id:" '\r
1520 +add_message "[subject]=\"search by id\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1521 +output=$($NOTMUCH search id:${gen_msg_id} | notmuch_search_sanitize) &&\r
1522 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)"\r
1523 +\r
1524 +'\r
1525 +test_expect_success "Search by tag:" '\r
1526 +add_message "[subject]=\"search by tag\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1527 +$NOTMUCH tag +searchbytag id:${gen_msg_id} &&\r
1528 +output=$($NOTMUCH search tag:searchbytag | notmuch_search_sanitize) &&\r
1529 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)"\r
1530 +\r
1531 +'\r
1532 +test_expect_success "Search by thread:" '\r
1533 +add_message "[subject]=\"search by thread\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1534 +thread_id=$($NOTMUCH search id:${gen_msg_id} | sed -e "s/thread:\([a-f0-9]*\).*/\1/") &&\r
1535 +output=$($NOTMUCH search thread:${thread_id} | notmuch_search_sanitize) &&\r
1536 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)"\r
1537 +\r
1538 +'\r
1539 +test_expect_success "Search body (phrase)" '\r
1540 +add_message "[subject]=\"body search (phrase)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"body search (phrase)\"" &&\r
1541 +add_message "[subject]=\"negative result\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"This phrase should not match the body search\"" &&\r
1542 +output=$($NOTMUCH search "\"body search (phrase)\"" | notmuch_search_sanitize) &&\r
1543 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (phrase) (inbox unread)"\r
1544 +\r
1545 +'\r
1546 +test_expect_success "Search by from: (address)" '\r
1547 +add_message "[subject]=\"search by from (address)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [from]=searchbyfrom@example.com &&\r
1548 +output=$($NOTMUCH search from:searchbyfrom@example.com | notmuch_search_sanitize) &&\r
1549 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] searchbyfrom@example.com; search by from (address) (inbox unread)"\r
1550 +\r
1551 +'\r
1552 +test_expect_success "Search by from: (name)" '\r
1553 +add_message "[subject]=\"search by from (name)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[from]=\"Search By From Name <test@example.com>\"" &&\r
1554 +output=$($NOTMUCH search from:"Search By From Name" | notmuch_search_sanitize) &&\r
1555 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Search By From Name; search by from (name) (inbox unread)"\r
1556 +\r
1557 +'\r
1558 +test_expect_success "Search by to: (address)" '\r
1559 +add_message "[subject]=\"search by to (address)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" [to]=searchbyto@example.com &&\r
1560 +output=$($NOTMUCH search to:searchbyto@example.com | notmuch_search_sanitize) &&\r
1561 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (address) (inbox unread)"\r
1562 +\r
1563 +'\r
1564 +test_expect_success "Search by to: (name)" '\r
1565 +add_message "[subject]=\"search by to (name)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[to]=\"Search By To Name <test@example.com>\"" &&\r
1566 +output=$($NOTMUCH search to:"Search By To Name" | notmuch_search_sanitize) &&\r
1567 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unread)"\r
1568 +\r
1569 +'\r
1570 +test_expect_success "Search by subject: (phrase)" '\r
1571 +add_message "[subject]=\"subject search test (phrase)\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1572 +add_message "[subject]=\"this phrase should not match the subject search test\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1573 +output=$($NOTMUCH search "subject:\"subject search test (phrase)\"" | notmuch_search_sanitize) &&\r
1574 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subject search test (phrase) (inbox unread)"\r
1575 +\r
1576 +'\r
1577 +test_expect_success "Search for all messages (\"*\"):" '\r
1578 +output=$($NOTMUCH search "*" | notmuch_search_sanitize) &&\r
1579 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)\r
1580 +thread:XXX   2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)\r
1581 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)\r
1582 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)\r
1583 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)\r
1584 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)\r
1585 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)\r
1586 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (phrase) (inbox unread)\r
1587 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; negative result (inbox unread)\r
1588 +thread:XXX   2000-01-01 [1/1] searchbyfrom@example.com; search by from (address) (inbox unread)\r
1589 +thread:XXX   2000-01-01 [1/1] Search By From Name; search by from (name) (inbox unread)\r
1590 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (address) (inbox unread)\r
1591 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (name) (inbox unread)\r
1592 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subject search test (phrase) (inbox unread)\r
1593 +thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; this phrase should not match the subject search test (inbox unread)"\r
1594 +\r
1595 +'\r
1596 +test_expect_success "Search body (utf-8):" '\r
1597 +add_message "[subject]=\"utf8-message-body-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"message body utf8: bödý\"" &&\r
1598 +output=$($NOTMUCH search "bödý" | notmuch_search_sanitize) &&\r
1599 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-message-body-subject (inbox unread)"\r
1600 +'\r
1601 +test_done\r
1602 diff --git a/test/t0003-json.sh b/test/t0003-json.sh\r
1603 new file mode 100755\r
1604 index 0000000..810262c\r
1605 --- /dev/null\r
1606 +++ b/test/t0003-json.sh\r
1607 @@ -0,0 +1,46 @@\r
1608 +#!/bin/bash\r
1609 +test_description="--format=json output"\r
1610 +. ./test-lib.sh\r
1611 +\r
1612 +test_expect_success "Show message: json" '\r
1613 +add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"json-show-message\"" &&\r
1614 +output=$($NOTMUCH show --format=json "json-show-message") &&\r
1615 +pass_if_equal "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Cc\": \"\", \"Bcc\": \"\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 -0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"\r
1616 +\r
1617 +'\r
1618 +test_expect_success "Search message: json" '\r
1619 +add_message "[subject]=\"json-search-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"json-search-message\"" &&\r
1620 +output=$($NOTMUCH search --format=json "json-search-message" | notmuch_search_sanitize) &&\r
1621 +pass_if_equal "$output" "[{\"thread\": \"XXX\",\r
1622 +\"timestamp\": 946728000,\r
1623 +\"matched\": 1,\r
1624 +\"total\": 1,\r
1625 +\"authors\": \"Notmuch Test Suite\",\r
1626 +\"subject\": \"json-search-subject\",\r
1627 +\"tags\": [\"inbox\", \"unread\"]}]"\r
1628 +\r
1629 +'\r
1630 +test_expect_success "Search by subject (utf-8):" '\r
1631 +add_message [subject]=utf8-sübjéct "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
1632 +output=$($NOTMUCH search subject:utf8-sübjéct | notmuch_search_sanitize) &&\r
1633 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-sübjéct (inbox unread)"\r
1634 +\r
1635 +'\r
1636 +test_expect_success "Show message: json, utf-8" '\r
1637 +add_message "[subject]=\"json-show-utf8-body-sübjéct\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"jsön-show-méssage\"" &&\r
1638 +output=$($NOTMUCH show --format=json "jsön-show-méssage") &&\r
1639 +pass_if_equal "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-utf8-body-sübjéct\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Cc\": \"\", \"Bcc\": \"\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 -0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"jsön-show-méssage\n\"}]}, []]]]"\r
1640 +\r
1641 +'\r
1642 +test_expect_success "Search message: json, utf-8" '\r
1643 +add_message "[subject]=\"json-search-utf8-body-sübjéct\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"jsön-search-méssage\"" &&\r
1644 +output=$($NOTMUCH search --format=json "jsön-search-méssage" | notmuch_search_sanitize) &&\r
1645 +pass_if_equal "$output" "[{\"thread\": \"XXX\",\r
1646 +\"timestamp\": 946728000,\r
1647 +\"matched\": 1,\r
1648 +\"total\": 1,\r
1649 +\"authors\": \"Notmuch Test Suite\",\r
1650 +\"subject\": \"json-search-utf8-body-sübjéct\",\r
1651 +\"tags\": [\"inbox\", \"unread\"]}]"\r
1652 +'\r
1653 +test_done\r
1654 diff --git a/test/t0004-thread-naming.sh b/test/t0004-thread-naming.sh\r
1655 new file mode 100755\r
1656 index 0000000..88216f2\r
1657 --- /dev/null\r
1658 +++ b/test/t0004-thread-naming.sh\r
1659 @@ -0,0 +1,191 @@\r
1660 +#!/bin/bash\r
1661 +test_description="naming of threads with changing subject"\r
1662 +. ./test-lib.sh\r
1663 +test_expect_success 'Generate some messages' '\r
1664 +add_message "[subject]=\"thread-naming: Initial thread subject\"" \\r
1665 +            "[date]=\"Fri, 05 Jan 2001 15:43:56 -0800\"" &&\r
1666 +first=${gen_msg_cnt} &&\r
1667 +parent=${gen_msg_id} &&\r
1668 +add_message "[subject]=\"thread-naming: Older changed subject\"" \\r
1669 +            "[date]=\"Sat, 06 Jan 2001 15:43:56 -0800\"" \\r
1670 +            "[in-reply-to]=\<$parent\>" &&\r
1671 +add_message "[subject]=\"thread-naming: Newer changed subject\"" \\r
1672 +            "[date]=\"Sun, 07 Jan 2001 15:43:56 -0800\"" \\r
1673 +            "[in-reply-to]=\<$parent\>" &&\r
1674 +add_message "[subject]=\"thread-naming: Final thread subject\"" \\r
1675 +            "[date]=\"Mon, 08 Jan 2001 15:43:56 -0800\"" \\r
1676 +            "[in-reply-to]=\<$parent\>" &&\r
1677 +final=${gen_msg_id}\r
1678 +\r
1679 +'\r
1680 +test_expect_success "Initial thread name (oldest-first search)" '\r
1681 +output=$($NOTMUCH search --sort=oldest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1682 +pass_if_equal "$output" "thread:XXX   2001-01-05 [4/4] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
1683 +\r
1684 +'\r
1685 +test_expect_success "Initial thread name (newest-first search)" '\r
1686 +output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1687 +pass_if_equal "$output" "thread:XXX   2001-01-08 [4/4] Notmuch Test Suite; thread-naming: Final thread subject (inbox unread)"\r
1688 +\r
1689 +# Remove oldest and newest messages from search results\r
1690 +$NOTMUCH tag -inbox id:$parent or id:$final\r
1691 +\r
1692 +'\r
1693 +test_expect_success "Changed thread name (oldest-first search)" '\r
1694 +output=$($NOTMUCH search --sort=oldest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1695 +pass_if_equal "$output" "thread:XXX   2001-01-06 [2/4] Notmuch Test Suite; thread-naming: Older changed subject (inbox unread)"\r
1696 +\r
1697 +'\r
1698 +test_expect_success "Changed thread name (newest-first search)" '\r
1699 +output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1700 +pass_if_equal "$output" "thread:XXX   2001-01-07 [2/4] Notmuch Test Suite; thread-naming: Newer changed subject (inbox unread)"\r
1701 +\r
1702 +'\r
1703 +test_expect_success "Ignore added reply prefix (Re:)" '\r
1704 +add_message "[subject]=\"Re: thread-naming: Initial thread subject\"" \\r
1705 +            "[date]=\"Tue, 09 Jan 2001 15:43:45 -0800\"" \\r
1706 +            "[in-reply-to]=\<$parent\>" &&\r
1707 +output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1708 +pass_if_equal "$output" "thread:XXX   2001-01-09 [3/5] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
1709 +\r
1710 +'\r
1711 +test_expect_success "Ignore added reply prefix (Aw:)" '\r
1712 +add_message "[subject]=\"Aw: thread-naming: Initial thread subject\"" \\r
1713 +            "[date]=\"Wed, 10 Jan 2001 15:43:45 -0800\"" \\r
1714 +            "[in-reply-to]=\<$parent\>" &&\r
1715 +output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1716 +pass_if_equal "$output" "thread:XXX   2001-01-10 [4/6] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
1717 +\r
1718 +'\r
1719 +test_expect_success "Ignore added reply prefix (Vs:)" '\r
1720 +add_message "[subject]=\"Vs: thread-naming: Initial thread subject\"" \\r
1721 +            "[date]=\"Thu, 11 Jan 2001 15:43:45 -0800\"" \\r
1722 +            "[in-reply-to]=\<$parent\>" &&\r
1723 +output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1724 +pass_if_equal "$output" "thread:XXX   2001-01-11 [5/7] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
1725 +\r
1726 +'\r
1727 +test_expect_success "Ignore added reply prefix (Sv:)" '\r
1728 +add_message "[subject]=\"Sv: thread-naming: Initial thread subject\"" \\r
1729 +            "[date]=\"Fri, 12 Jan 2001 15:43:45 -0800\"" \\r
1730 +            "[in-reply-to]=\<$parent\>" &&\r
1731 +output=$($NOTMUCH search --sort=newest-first thread-naming and tag:inbox | notmuch_search_sanitize) &&\r
1732 +pass_if_equal "$output" "thread:XXX   2001-01-12 [6/8] Notmuch Test Suite; thread-naming: Initial thread subject (inbox unread)"\r
1733 +\r
1734 +'\r
1735 +test_expect_success "Test order of messages in \"notmuch show\"" '\r
1736 +output=$($NOTMUCH show thread-naming | notmuch_show_sanitize) &&\r
1737 +pass_if_equal "$output" "\f\r
1738 message{ id:msg-$(printf "%03d" $first)@notmuch-test-suite depth:0 match:1 filename:/XXX/mail/msg-$(printf "%03d" $first)\r
1739 +\f\r
1740 header{\r
1741 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (unread)\r
1742 +Subject: thread-naming: Initial thread subject\r
1743 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1744 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1745 +Date: Fri, 05 Jan 2001 15:43:56 -0800\r
1746 +\f\r
1747 header}\r
1748 +\f\r
1749 body{\r
1750 +\f\r
1751 part{ ID: 1, Content-type: text/plain\r
1752 +This is just a test message (#$first)\r
1753 +\f\r
1754 part}\r
1755 +\f\r
1756 body}\r
1757 +\f\r
1758 message}\r
1759 +\f\r
1760 message{ id:msg-$(printf "%03d" $((first + 1)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 1)))\r
1761 +\f\r
1762 header{\r
1763 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-06) (inbox unread)\r
1764 +Subject: thread-naming: Older changed subject\r
1765 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1766 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1767 +Date: Sat, 06 Jan 2001 15:43:56 -0800\r
1768 +\f\r
1769 header}\r
1770 +\f\r
1771 body{\r
1772 +\f\r
1773 part{ ID: 1, Content-type: text/plain\r
1774 +This is just a test message (#$((first + 1)))\r
1775 +\f\r
1776 part}\r
1777 +\f\r
1778 body}\r
1779 +\f\r
1780 message}\r
1781 +\f\r
1782 message{ id:msg-$(printf "%03d" $((first + 2)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 2)))\r
1783 +\f\r
1784 header{\r
1785 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-07) (inbox unread)\r
1786 +Subject: thread-naming: Newer changed subject\r
1787 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1788 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1789 +Date: Sun, 07 Jan 2001 15:43:56 -0800\r
1790 +\f\r
1791 header}\r
1792 +\f\r
1793 body{\r
1794 +\f\r
1795 part{ ID: 1, Content-type: text/plain\r
1796 +This is just a test message (#$((first + 2)))\r
1797 +\f\r
1798 part}\r
1799 +\f\r
1800 body}\r
1801 +\f\r
1802 message}\r
1803 +\f\r
1804 message{ id:msg-$(printf "%03d" $((first + 3)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 3)))\r
1805 +\f\r
1806 header{\r
1807 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-08) (unread)\r
1808 +Subject: thread-naming: Final thread subject\r
1809 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1810 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1811 +Date: Mon, 08 Jan 2001 15:43:56 -0800\r
1812 +\f\r
1813 header}\r
1814 +\f\r
1815 body{\r
1816 +\f\r
1817 part{ ID: 1, Content-type: text/plain\r
1818 +This is just a test message (#$((first + 3)))\r
1819 +\f\r
1820 part}\r
1821 +\f\r
1822 body}\r
1823 +\f\r
1824 message}\r
1825 +\f\r
1826 message{ id:msg-$(printf "%03d" $((first + 4)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 4)))\r
1827 +\f\r
1828 header{\r
1829 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-09) (inbox unread)\r
1830 +Subject: Re: thread-naming: Initial thread subject\r
1831 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1832 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1833 +Date: Tue, 09 Jan 2001 15:43:45 -0800\r
1834 +\f\r
1835 header}\r
1836 +\f\r
1837 body{\r
1838 +\f\r
1839 part{ ID: 1, Content-type: text/plain\r
1840 +This is just a test message (#$((first + 4)))\r
1841 +\f\r
1842 part}\r
1843 +\f\r
1844 body}\r
1845 +\f\r
1846 message}\r
1847 +\f\r
1848 message{ id:msg-$(printf "%03d" $((first + 5)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 5)))\r
1849 +\f\r
1850 header{\r
1851 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-10) (inbox unread)\r
1852 +Subject: Aw: thread-naming: Initial thread subject\r
1853 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1854 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1855 +Date: Wed, 10 Jan 2001 15:43:45 -0800\r
1856 +\f\r
1857 header}\r
1858 +\f\r
1859 body{\r
1860 +\f\r
1861 part{ ID: 1, Content-type: text/plain\r
1862 +This is just a test message (#$((first + 5)))\r
1863 +\f\r
1864 part}\r
1865 +\f\r
1866 body}\r
1867 +\f\r
1868 message}\r
1869 +\f\r
1870 message{ id:msg-$(printf "%03d" $((first + 6)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 6)))\r
1871 +\f\r
1872 header{\r
1873 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-11) (inbox unread)\r
1874 +Subject: Vs: thread-naming: Initial thread subject\r
1875 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1876 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1877 +Date: Thu, 11 Jan 2001 15:43:45 -0800\r
1878 +\f\r
1879 header}\r
1880 +\f\r
1881 body{\r
1882 +\f\r
1883 part{ ID: 1, Content-type: text/plain\r
1884 +This is just a test message (#$((first + 6)))\r
1885 +\f\r
1886 part}\r
1887 +\f\r
1888 body}\r
1889 +\f\r
1890 message}\r
1891 +\f\r
1892 message{ id:msg-$(printf "%03d" $((first + 7)))@notmuch-test-suite depth:1 match:1 filename:/XXX/mail/msg-$(printf "%03d" $((first + 7)))\r
1893 +\f\r
1894 header{\r
1895 +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-12) (inbox unread)\r
1896 +Subject: Sv: thread-naming: Initial thread subject\r
1897 +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1898 +To: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1899 +Date: Fri, 12 Jan 2001 15:43:45 -0800\r
1900 +\f\r
1901 header}\r
1902 +\f\r
1903 body{\r
1904 +\f\r
1905 part{ ID: 1, Content-type: text/plain\r
1906 +This is just a test message (#$((first + 7)))\r
1907 +\f\r
1908 part}\r
1909 +\f\r
1910 body}\r
1911 +\f\r
1912 message}"\r
1913 +'\r
1914 +test_done\r
1915 diff --git a/test/t0005-reply.sh b/test/t0005-reply.sh\r
1916 new file mode 100755\r
1917 index 0000000..670bc73\r
1918 --- /dev/null\r
1919 +++ b/test/t0005-reply.sh\r
1920 @@ -0,0 +1,122 @@\r
1921 +#!/bin/bash\r
1922 +test_description="\"notmuch reply\" in several variations"\r
1923 +. ./test-lib.sh\r
1924 +\r
1925 +test_expect_success "Basic reply" '\r
1926 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
1927 +             [to]=test_suite@notmuchmail.org \\r
1928 +             [subject]=notmuch-reply-test \\r
1929 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
1930 +            "[body]=\"basic reply test\"" &&\r
1931 +\r
1932 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
1933 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1934 +Subject: Re: notmuch-reply-test\r
1935 +To: Sender <sender@example.com>\r
1936 +Bcc: test_suite@notmuchmail.org\r
1937 +In-Reply-To: <${gen_msg_id}>\r
1938 +References: <${gen_msg_id}>\r
1939 +\r
1940 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1941 +> basic reply test"\r
1942 +\r
1943 +'\r
1944 +test_expect_success "Multiple recipients" '\r
1945 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
1946 +            "[to]=\"test_suite@notmuchmail.org, Someone Else <someone@example.com>\"" \\r
1947 +             [subject]=notmuch-reply-test \\r
1948 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
1949 +            "[body]=\"Multiple recipients\"" &&\r
1950 +\r
1951 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
1952 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1953 +Subject: Re: notmuch-reply-test\r
1954 +To: Sender <sender@example.com>, Someone Else <someone@example.com>\r
1955 +Bcc: test_suite@notmuchmail.org\r
1956 +In-Reply-To: <${gen_msg_id}>\r
1957 +References: <${gen_msg_id}>\r
1958 +\r
1959 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1960 +> Multiple recipients"\r
1961 +\r
1962 +'\r
1963 +test_expect_success "Reply with CC" '\r
1964 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
1965 +             [to]=test_suite@notmuchmail.org \\r
1966 +            "[cc]=\"Other Parties <cc@example.com>\"" \\r
1967 +             [subject]=notmuch-reply-test \\r
1968 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
1969 +            "[body]=\"reply with CC\"" &&\r
1970 +\r
1971 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
1972 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
1973 +Subject: Re: notmuch-reply-test\r
1974 +To: Sender <sender@example.com>\r
1975 +Cc: Other Parties <cc@example.com>\r
1976 +Bcc: test_suite@notmuchmail.org\r
1977 +In-Reply-To: <${gen_msg_id}>\r
1978 +References: <${gen_msg_id}>\r
1979 +\r
1980 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
1981 +> reply with CC"\r
1982 +\r
1983 +'\r
1984 +test_expect_success "Reply from alternate address" '\r
1985 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
1986 +             [to]=test_suite_other@notmuchmail.org \\r
1987 +             [subject]=notmuch-reply-test \\r
1988 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
1989 +            "[body]=\"reply from alternate address\"" &&\r
1990 +\r
1991 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
1992 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
1993 +Subject: Re: notmuch-reply-test\r
1994 +To: Sender <sender@example.com>\r
1995 +Bcc: test_suite@notmuchmail.org\r
1996 +In-Reply-To: <${gen_msg_id}>\r
1997 +References: <${gen_msg_id}>\r
1998 +\r
1999 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2000 +> reply from alternate address"\r
2001 +\r
2002 +'\r
2003 +test_expect_success "Support for Reply-To" '\r
2004 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2005 +             [to]=test_suite@notmuchmail.org \\r
2006 +             [subject]=notmuch-reply-test \\r
2007 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2008 +            "[body]=\"support for reply-to\"" \\r
2009 +            "[reply-to]=\"Sender <elsewhere@example.com>\"" &&\r
2010 +\r
2011 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2012 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2013 +Subject: Re: notmuch-reply-test\r
2014 +To: Sender <elsewhere@example.com>\r
2015 +Bcc: test_suite@notmuchmail.org\r
2016 +In-Reply-To: <${gen_msg_id}>\r
2017 +References: <${gen_msg_id}>\r
2018 +\r
2019 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2020 +> support for reply-to"\r
2021 +\r
2022 +'\r
2023 +test_expect_success "Un-munging Reply-To" '\r
2024 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2025 +            "[to]=\"Some List <list@example.com>\"" \\r
2026 +             [subject]=notmuch-reply-test \\r
2027 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2028 +            "[body]=\"Un-munging Reply-To\"" \\r
2029 +            "[reply-to]=\"Evil Munging List <list@example.com>\"" &&\r
2030 +\r
2031 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2032 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2033 +Subject: Re: notmuch-reply-test\r
2034 +To: Sender <sender@example.com>, Some List <list@example.com>\r
2035 +Bcc: test_suite@notmuchmail.org\r
2036 +In-Reply-To: <${gen_msg_id}>\r
2037 +References: <${gen_msg_id}>\r
2038 +\r
2039 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2040 +> Un-munging Reply-To"\r
2041 +'\r
2042 +test_done\r
2043 diff --git a/test/t0006-dump-restore.sh b/test/t0006-dump-restore.sh\r
2044 new file mode 100755\r
2045 index 0000000..f971181\r
2046 --- /dev/null\r
2047 +++ b/test/t0006-dump-restore.sh\r
2048 @@ -0,0 +1,30 @@\r
2049 +#!/bin/bash\r
2050 +test_description="\"notmuch dump\" and \"notmuch restore\""\r
2051 +. ./test-lib.sh\r
2052 +test_expect_success 'Generate some message' '\r
2053 +generate_message &&\r
2054 +notmuch new\r
2055 +'\r
2056 +test_expect_success "Dumping all tags" '\r
2057 +$NOTMUCH dump dump.expected &&\r
2058 +pass_if_equal "$?" "0"\r
2059 +\r
2060 +'\r
2061 +test_expect_success "Clearing all tags" '\r
2062 +sed -e "s/(\([^(]*\))$/()/" < dump.expected > clear.expected\r
2063 +$NOTMUCH restore clear.expected &&\r
2064 +$NOTMUCH dump clear.actual &&\r
2065 +pass_if_equal "$(< clear.actual)" "$(< clear.expected)"\r
2066 +\r
2067 +'\r
2068 +test_expect_success "Restoring original tags" '\r
2069 +$NOTMUCH restore dump.expected &&\r
2070 +$NOTMUCH dump dump.actual &&\r
2071 +pass_if_equal "$(< dump.actual)" "$(< dump.expected)"\r
2072 +\r
2073 +'\r
2074 +test_expect_success "Restore with nothing to do" '\r
2075 +$NOTMUCH restore dump.expected &&\r
2076 +pass_if_equal "$?" "0"\r
2077 +'\r
2078 +test_done\r
2079 diff --git a/test/t0007-uuencode.sh b/test/t0007-uuencode.sh\r
2080 new file mode 100755\r
2081 index 0000000..e290610\r
2082 --- /dev/null\r
2083 +++ b/test/t0007-uuencode.sh\r
2084 @@ -0,0 +1,36 @@\r
2085 +#!/bin/bash\r
2086 +test_description="handling of uuencoded data"\r
2087 +. ./test-lib.sh\r
2088 +test_expect_success 'Generate message' '\r
2089 +\r
2090 +add_message [subject]=uuencodetest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \\r
2091 +"[body]=\"This message is used to ensure that notmuch correctly handles a\r
2092 +message containing a block of uuencoded data. First, we have a marker\r
2093 +this content beforeuudata . Then we beging the uunencoded data itself:\r
2094 +\r
2095 +begin 644 bogus-uuencoded-data\r
2096 +M0123456789012345678901234567890123456789012345678901234567890\r
2097 +MOBVIOUSLY, THIS IS NOT ANY SORT OF USEFUL UUNECODED DATA.    \r
2098 +MINSTEAD THIS IS JUST A WAY TO ENSURE THAT THIS BLOCK OF DATA \r
2099 +MIS CORRECTLY IGNORED WHEN NOTMUCH CREATES ITS INDEX. SO WE   \r
2100 +MINCLUDE A DURINGUUDATA MARKER THAT SHOULD NOT RESULT IN ANY  \r
2101 +MSEARCH RESULT.                                               \r
2102 +\\\`\r
2103 +end\r
2104 +\r
2105 +Finally, we have our afteruudata marker as well.\""\r
2106 +\r
2107 +'\r
2108 +test_expect_success "Ensure content before uu data is indexed" '\r
2109 +output=$($NOTMUCH search beforeuudata | notmuch_search_sanitize) &&\r
2110 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; uuencodetest (inbox unread)"\r
2111 +'\r
2112 +test_expect_success "Ensure uu data is not indexed" '\r
2113 +output=$($NOTMUCH search DURINGUUDATA | notmuch_search_sanitize) &&\r
2114 +pass_if_equal "$output" ""\r
2115 +'\r
2116 +test_expect_success "Ensure content after uu data is indexed" '\r
2117 +output=$($NOTMUCH search afteruudata | notmuch_search_sanitize) &&\r
2118 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; uuencodetest (inbox unread)"\r
2119 +'\r
2120 +test_done\r
2121 diff --git a/test/t0008-threading-out-of-order.sh b/test/t0008-threading-out-of-order.sh\r
2122 new file mode 100755\r
2123 index 0000000..9f360b7\r
2124 --- /dev/null\r
2125 +++ b/test/t0008-threading-out-of-order.sh\r
2126 @@ -0,0 +1,31 @@\r
2127 +#!/bin/bash\r
2128 +test_description="threading when messages received out of order"\r
2129 +. ./test-lib.sh\r
2130 +test_expect_success "Adding initial child message" '\r
2131 +generate_message [body]=foo "[in-reply-to]=\<parent-id\>" [subject]=brokenthreadtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
2132 +output=$(NOTMUCH_NEW) &&\r
2133 +pass_if_equal "$output" "Added 1 new message to the database."\r
2134 +'\r
2135 +test_expect_success "Searching returns the message" '\r
2136 +output=$($NOTMUCH search foo | notmuch_search_sanitize) &&\r
2137 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; brokenthreadtest (inbox unread)"\r
2138 +'\r
2139 +test_expect_success "Adding second child message" '\r
2140 +generate_message [body]=foo "[in-reply-to]=\<parent-id\>" [subject]=brokenthreadtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
2141 +output=$(NOTMUCH_NEW) &&\r
2142 +pass_if_equal "$output" "Added 1 new message to the database."\r
2143 +'\r
2144 +test_expect_success "Searching returns both messages in one thread" '\r
2145 +output=$($NOTMUCH search foo | notmuch_search_sanitize) &&\r
2146 +pass_if_equal "$output" "thread:XXX   2000-01-01 [2/2] Notmuch Test Suite; brokenthreadtest (inbox unread)"\r
2147 +'\r
2148 +test_expect_success "Adding parent message" '\r
2149 +generate_message [body]=foo [id]=parent-id [subject]=brokenthreadtest "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
2150 +output=$(NOTMUCH_NEW) &&\r
2151 +pass_if_equal "$output" "Added 1 new message to the database."\r
2152 +'\r
2153 +test_expect_success "Searching returns all three messages in one thread" '\r
2154 +output=$($NOTMUCH search foo | notmuch_search_sanitize) &&\r
2155 +pass_if_equal "$output" "thread:XXX   2000-01-01 [3/3] Notmuch Test Suite; brokenthreadtest (inbox unread)"\r
2156 +'\r
2157 +test_done\r
2158 diff --git a/test/t0009-author-reordering.sh b/test/t0009-author-reordering.sh\r
2159 new file mode 100755\r
2160 index 0000000..b993341\r
2161 --- /dev/null\r
2162 +++ b/test/t0009-author-reordering.sh\r
2163 @@ -0,0 +1,35 @@\r
2164 +#!/bin/bash\r
2165 +test_description="author reordering;"\r
2166 +. ./test-lib.sh\r
2167 +test_expect_success "Adding parent message" '\r
2168 +generate_message [body]=findme [id]=new-parent-id [subject]=author-reorder-threadtest "[from]=\"User <user@example.com>\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
2169 +output=$(NOTMUCH_NEW) &&\r
2170 +pass_if_equal "$output" "Added 1 new message to the database."\r
2171 +'\r
2172 +test_expect_success "Adding initial child message" '\r
2173 +generate_message [body]=findme "[in-reply-to]=\<new-parent-id\>" [subject]=author-reorder-threadtest "[from]=\"User1 <user1@example.com>\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
2174 +output=$(NOTMUCH_NEW) &&\r
2175 +pass_if_equal "$output" "Added 1 new message to the database."\r
2176 +'\r
2177 +test_expect_success "Adding second child message" '\r
2178 +generate_message [body]=findme "[in-reply-to]=\<new-parent-id\>" [subject]=author-reorder-threadtest "[from]=\"User2 <user2@example.com>\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" &&\r
2179 +output=$(NOTMUCH_NEW) &&\r
2180 +pass_if_equal "$output" "Added 1 new message to the database."\r
2181 +'\r
2182 +test_expect_success "Searching when all three messages match" '\r
2183 +output=$($NOTMUCH search findme | notmuch_search_sanitize) &&\r
2184 +pass_if_equal "$output" "thread:XXX   2000-01-01 [3/3] User, User1, User2; author-reorder-threadtest (inbox unread)"\r
2185 +'\r
2186 +test_expect_success "Searching when two messages match" '\r
2187 +output=$($NOTMUCH search User1 or User2 | notmuch_search_sanitize) &&\r
2188 +pass_if_equal "$output" "thread:XXX   2000-01-01 [2/3] User1, User2| User; author-reorder-threadtest (inbox unread)"\r
2189 +'\r
2190 +test_expect_success "Searching when only one message matches" '\r
2191 +output=$($NOTMUCH search User2 | notmuch_search_sanitize) &&\r
2192 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/3] User2| User, User1; author-reorder-threadtest (inbox unread)"\r
2193 +'\r
2194 +test_expect_success "Searching when only first message matches" '\r
2195 +output=$($NOTMUCH search User | notmuch_search_sanitize) &&\r
2196 +pass_if_equal "$output" "thread:XXX   2000-01-01 [1/3] User| User1, User2; author-reorder-threadtest (inbox unread)"\r
2197 +'\r
2198 +test_done\r
2199 diff --git a/test/t0010-from-line-heuristics.sh b/test/t0010-from-line-heuristics.sh\r
2200 new file mode 100755\r
2201 index 0000000..cb3f5b3\r
2202 --- /dev/null\r
2203 +++ b/test/t0010-from-line-heuristics.sh\r
2204 @@ -0,0 +1,214 @@\r
2205 +#!/bin/bash\r
2206 +test_description="From line heuristics (with multiple configured addresses)"\r
2207 +. ./test-lib.sh\r
2208 +test_expect_success "Magic from guessing (nothing to go on)" '\r
2209 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2210 +             [to]=mailinglist@notmuchmail.org \\r
2211 +             [subject]=notmuch-reply-test \\r
2212 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2213 +            "[body]=\"from guessing test\"" &&\r
2214 +\r
2215 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2216 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2217 +Subject: Re: notmuch-reply-test\r
2218 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2219 +Bcc: test_suite@notmuchmail.org\r
2220 +In-Reply-To: <${gen_msg_id}>\r
2221 +References: <${gen_msg_id}>\r
2222 +\r
2223 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2224 +> from guessing test"\r
2225 +\r
2226 +'\r
2227 +test_expect_success "Magic from guessing (Envelope-to:)" '\r
2228 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2229 +             [to]=mailinglist@notmuchmail.org \\r
2230 +             [subject]=notmuch-reply-test \\r
2231 +            "[header]=\"Envelope-To: test_suite_other@notmuchmail.org\"" \\r
2232 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2233 +            "[body]=\"from guessing test\"" &&\r
2234 +\r
2235 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2236 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
2237 +Subject: Re: notmuch-reply-test\r
2238 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2239 +Bcc: test_suite@notmuchmail.org\r
2240 +In-Reply-To: <${gen_msg_id}>\r
2241 +References: <${gen_msg_id}>\r
2242 +\r
2243 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2244 +> from guessing test"\r
2245 +\r
2246 +'\r
2247 +test_expect_success "Magic from guessing (X-Original-To:)" '\r
2248 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2249 +             [to]=mailinglist@notmuchmail.org \\r
2250 +             [subject]=notmuch-reply-test \\r
2251 +            "[header]=\"X-Original-To: test_suite_other@notmuchmail.org\"" \\r
2252 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2253 +            "[body]=\"from guessing test\"" &&\r
2254 +\r
2255 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2256 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
2257 +Subject: Re: notmuch-reply-test\r
2258 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2259 +Bcc: test_suite@notmuchmail.org\r
2260 +In-Reply-To: <${gen_msg_id}>\r
2261 +References: <${gen_msg_id}>\r
2262 +\r
2263 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2264 +> from guessing test"\r
2265 +\r
2266 +'\r
2267 +test_expect_success "Magic from guessing (Received: .. for ..)" '\r
2268 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2269 +             [to]=mailinglist@notmuchmail.org \\r
2270 +             [subject]=notmuch-reply-test \\r
2271 +            "[header]=\"Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
2272 +        by mail.notmuchmail.org (some MTA) with ESMTP id 12345678\\r
2273 +        for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 07:54:51 -0400 (EDT)\"" \\r
2274 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2275 +            "[body]=\"from guessing test\"" &&\r
2276 +\r
2277 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2278 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
2279 +Subject: Re: notmuch-reply-test\r
2280 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2281 +Bcc: test_suite@notmuchmail.org\r
2282 +In-Reply-To: <${gen_msg_id}>\r
2283 +References: <${gen_msg_id}>\r
2284 +\r
2285 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2286 +> from guessing test"\r
2287 +\r
2288 +'\r
2289 +test_expect_success "Magic from guessing (Received: domain)" '\r
2290 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2291 +             [to]=mailinglist@notmuchmail.org \\r
2292 +             [subject]=notmuch-reply-test \\r
2293 +            "[header]=\"Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
2294 +        by mail.otherdomain.org (some MTA) with ESMTP id 12345678\\r
2295 +        Sat, 10 Apr 2010 07:54:51 -0400 (EDT)\"" \\r
2296 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2297 +            "[body]=\"from guessing test\"" &&\r
2298 +\r
2299 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2300 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@otherdomain.org>\r
2301 +Subject: Re: notmuch-reply-test\r
2302 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2303 +Bcc: test_suite@notmuchmail.org\r
2304 +In-Reply-To: <${gen_msg_id}>\r
2305 +References: <${gen_msg_id}>\r
2306 +\r
2307 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2308 +> from guessing test"\r
2309 +\r
2310 +\r
2311 +'\r
2312 +test_expect_success "\nTesting From line heuristics (with single configured address):\n" '\r
2313 +sed -i -e "s/^other_email.*//" "${NOTMUCH_CONFIG}"\r
2314 +\r
2315 +'\r
2316 +test_expect_success "Magic from guessing (nothing to go on)" '\r
2317 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2318 +             [to]=mailinglist@notmuchmail.org \\r
2319 +             [subject]=notmuch-reply-test \\r
2320 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2321 +            "[body]=\"from guessing test\"" &&\r
2322 +\r
2323 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2324 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2325 +Subject: Re: notmuch-reply-test\r
2326 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2327 +Bcc: test_suite@notmuchmail.org\r
2328 +In-Reply-To: <${gen_msg_id}>\r
2329 +References: <${gen_msg_id}>\r
2330 +\r
2331 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2332 +> from guessing test"\r
2333 +\r
2334 +'\r
2335 +test_expect_success "Magic from guessing (Envelope-to:)" '\r
2336 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2337 +             [to]=mailinglist@notmuchmail.org \\r
2338 +             [subject]=notmuch-reply-test \\r
2339 +            "[header]=\"Envelope-To: test_suite_other@notmuchmail.org\"" \\r
2340 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2341 +            "[body]=\"from guessing test\"" &&\r
2342 +\r
2343 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2344 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2345 +Subject: Re: notmuch-reply-test\r
2346 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2347 +Bcc: test_suite@notmuchmail.org\r
2348 +In-Reply-To: <${gen_msg_id}>\r
2349 +References: <${gen_msg_id}>\r
2350 +\r
2351 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2352 +> from guessing test"\r
2353 +\r
2354 +'\r
2355 +test_expect_success "Magic from guessing (X-Original-To:)" '\r
2356 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2357 +             [to]=mailinglist@notmuchmail.org \\r
2358 +             [subject]=notmuch-reply-test \\r
2359 +            "[header]=\"X-Original-To: test_suite_other@notmuchmail.org\"" \\r
2360 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2361 +            "[body]=\"from guessing test\"" &&\r
2362 +\r
2363 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2364 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2365 +Subject: Re: notmuch-reply-test\r
2366 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2367 +Bcc: test_suite@notmuchmail.org\r
2368 +In-Reply-To: <${gen_msg_id}>\r
2369 +References: <${gen_msg_id}>\r
2370 +\r
2371 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2372 +> from guessing test"\r
2373 +\r
2374 +'\r
2375 +test_expect_success "Magic from guessing (Received: .. for ..)" '\r
2376 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2377 +             [to]=mailinglist@notmuchmail.org \\r
2378 +             [subject]=notmuch-reply-test \\r
2379 +            "[header]=\"Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
2380 +        by mail.notmuchmail.org (some MTA) with ESMTP id 12345678\\r
2381 +        for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 07:54:51 -0400 (EDT)\"" \\r
2382 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2383 +            "[body]=\"from guessing test\"" &&\r
2384 +\r
2385 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2386 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2387 +Subject: Re: notmuch-reply-test\r
2388 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2389 +Bcc: test_suite@notmuchmail.org\r
2390 +In-Reply-To: <${gen_msg_id}>\r
2391 +References: <${gen_msg_id}>\r
2392 +\r
2393 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2394 +> from guessing test"\r
2395 +\r
2396 +'\r
2397 +test_expect_success "Magic from guessing (Received: domain)" '\r
2398 +add_message "[from]=\"Sender <sender@example.com>\"" \\r
2399 +             [to]=mailinglist@notmuchmail.org \\r
2400 +             [subject]=notmuch-reply-test \\r
2401 +            "[header]=\"Received: from mail.example.com (mail.example.com [1.1.1.1])\\r
2402 +        by mail.otherdomain.org (some MTA) with ESMTP id 12345678\\r
2403 +        Sat, 10 Apr 2010 07:54:51 -0400 (EDT)\"" \\r
2404 +            "[date]=\"Tue, 05 Jan 2010 15:43:56 -0800\"" \\r
2405 +            "[body]=\"from guessing test\"" &&\r
2406 +\r
2407 +output=$($NOTMUCH reply id:${gen_msg_id}) &&\r
2408 +pass_if_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
2409 +Subject: Re: notmuch-reply-test\r
2410 +To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
2411 +Bcc: test_suite@notmuchmail.org\r
2412 +In-Reply-To: <${gen_msg_id}>\r
2413 +References: <${gen_msg_id}>\r
2414 +\r
2415 +On Tue, 05 Jan 2010 15:43:56 -0800, Sender <sender@example.com> wrote:\r
2416 +> from guessing test"\r
2417 +'\r
2418 +test_done\r
2419 -- \r
2420 1.7.1\r
2421 \r