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