X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT220-reply.sh;h=4db3a95872df60e3fa8e952da5720e7110276339;hp=17741e0d7a85db77ca35e686f612d5e0ee6e99b4;hb=HEAD;hpb=5a69aa14748162429c43ad5ff3d8b35779fff0d4 diff --git a/test/T220-reply.sh b/test/T220-reply.sh index 17741e0d..120d7138 100755 --- a/test/T220-reply.sh +++ b/test/T220-reply.sh @@ -1,23 +1,35 @@ #!/usr/bin/env bash test_description="\"notmuch reply\" in several variations" -. ./test-lib.sh || exit 1 +. $(dirname "$0")/test-lib.sh || exit 1 -test_begin_subtest "Basic reply" add_message '[from]="Sender "' \ [to]=test_suite@notmuchmail.org \ [subject]=notmuch-reply-test \ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ '[body]="basic reply test"' -output=$(notmuch reply id:${gen_msg_id}) -test_expect_equal "$output" "From: Notmuch Test Suite +cat < basic.expected +From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> basic reply test" +> basic reply test +OK +EOF + +test_begin_subtest "Basic reply" +notmuch reply id:${gen_msg_id} >OUTPUT 2>&1 && echo OK >> OUTPUT +test_expect_equal_file basic.expected OUTPUT + +if [ "${NOTMUCH_HAVE_SFSEXP-0}" = "1" ]; then + + test_begin_subtest "Basic reply (query=sexp)" + notmuch reply --query=sexp "(id ${gen_msg_id})" >OUTPUT 2>&1 && echo OK >> OUTPUT + test_expect_equal_file basic.expected OUTPUT +fi test_begin_subtest "Multiple recipients" add_message '[from]="Sender "' \ @@ -26,7 +38,7 @@ add_message '[from]="Sender "' \ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ '[body]="Multiple recipients"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender , Someone Else @@ -34,7 +46,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> Multiple recipients" +> Multiple recipients +OK" test_begin_subtest "Reply with CC" add_message '[from]="Sender "' \ @@ -44,7 +57,7 @@ add_message '[from]="Sender "' \ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ '[body]="reply with CC"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender @@ -53,7 +66,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> reply with CC" +> reply with CC +OK" test_begin_subtest "Reply from alternate address" add_message '[from]="Sender "' \ @@ -62,7 +76,7 @@ add_message '[from]="Sender "' \ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ '[body]="reply from alternate address"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender @@ -70,7 +84,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> reply from alternate address" +> reply from alternate address +OK" test_begin_subtest "Reply from address in named group list" add_message '[from]="Sender "' \ @@ -80,7 +95,7 @@ add_message '[from]="Sender "' \ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ '[body]="Reply from address in named group list"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender , someone@example.com @@ -88,7 +103,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> Reply from address in named group list" +> Reply from address in named group list +OK" test_begin_subtest "Support for Reply-To" add_message '[from]="Sender "' \ @@ -98,7 +114,7 @@ add_message '[from]="Sender "' \ '[body]="support for reply-to"' \ '[reply-to]="Sender "' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender @@ -106,7 +122,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> support for reply-to" +> support for reply-to +OK" test_begin_subtest "Un-munging Reply-To" add_message '[from]="Sender "' \ @@ -116,7 +133,7 @@ add_message '[from]="Sender "' \ '[body]="Un-munging Reply-To"' \ '[reply-to]="Evil Munging List "' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: notmuch-reply-test To: Sender , Some List @@ -124,22 +141,63 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> Un-munging Reply-To" +> Un-munging Reply-To +OK" + +test_begin_subtest "Un-munging Reply-To With Exact Match" +add_message '[from]="Sender "' \ + '[to]="Some List "' \ + [subject]=notmuch-reply-test \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ + '[body]="Un-munging Reply-To"' \ + '[reply-to]="Some List "' + +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) +test_expect_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , Some List +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: +> Un-munging Reply-To +OK" + +test_begin_subtest "Un-munging Reply-To With Raw addr-spec" +add_message '[from]="Sender "' \ + '[to]="Some List "' \ + [subject]=notmuch-reply-test \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ + '[body]="Un-munging Reply-To"' \ + '[reply-to]="list@example.com"' + +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) +test_expect_equal "$output" "From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender , Some List +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: +> Un-munging Reply-To +OK" test_begin_subtest "Message with header of exactly 200 bytes" 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"' \ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ '[body]="200-byte header"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite 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 +To: test_suite@notmuchmail.org In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Notmuch Test Suite wrote: -> 200-byte header" +> 200-byte header +OK" test_begin_subtest "From guessing: Envelope-To" add_message '[from]="Sender "' \ @@ -149,7 +207,7 @@ add_message '[from]="Sender "' \ '[body]="From guessing"' \ '[header]="Envelope-To: test_suite_other@notmuchmail.org"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: From guessing To: Sender , Recipient @@ -157,7 +215,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> From guessing" +> From guessing +OK" test_begin_subtest "From guessing: X-Original-To" add_message '[from]="Sender "' \ @@ -167,7 +226,7 @@ add_message '[from]="Sender "' \ '[body]="From guessing"' \ '[header]="X-Original-To: test_suite@otherdomain.org"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: From guessing To: Sender , Recipient @@ -175,7 +234,8 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> From guessing" +> From guessing +OK" test_begin_subtest "From guessing: Delivered-To" add_message '[from]="Sender "' \ @@ -185,7 +245,7 @@ add_message '[from]="Sender "' \ '[body]="From guessing"' \ '[header]="Delivered-To: test_suite_other@notmuchmail.org"' -output=$(notmuch reply id:${gen_msg_id}) +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: From guessing To: Sender , Recipient @@ -193,7 +253,28 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: -> From guessing" +> From guessing +OK" + +test_begin_subtest "From guessing: multiple Delivered-To" +add_message '[from]="Sender "' \ + '[to]="Recipient "' \ + '[subject]="From guessing"' \ + '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \ + '[body]="From guessing"' \ + '[header]="Delivered-To: test_suite_other@notmuchmail.org +Delivered-To: test_suite@notmuchmail.org"' + +output=$(notmuch reply id:${gen_msg_id} 2>&1 && echo OK) +test_expect_equal "$output" "From: Notmuch Test Suite +Subject: Re: From guessing +To: Sender , Recipient +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: +> From guessing +OK" test_begin_subtest "Reply with RFC 2047-encoded headers" add_message '[subject]="=?iso-8859-1?q?=e0=df=e7?="' \ @@ -204,7 +285,7 @@ add_message '[subject]="=?iso-8859-1?q?=e0=df=e7?="' \ # GMime happens to change from Q- to B-encoding. We canonicalize the # case of the encoding and charset because different versions of GMime # capitalize the encoding differently. -output=$(notmuch reply id:${gen_msg_id} | perl -pe 's/=\?[^?]+\?[bB]\?/lc($&)/ge') +output=$( (notmuch reply id:${gen_msg_id} 2>&1 && echo OK) | perl -pe 's/=\?[^?]+\?[bB]\?/lc($&)/ge') test_expect_equal "$output" "\ From: Notmuch Test Suite Subject: Re: =?iso-8859-1?b?4N/n?= @@ -213,12 +294,14 @@ In-Reply-To: <${gen_msg_id}> References: <${gen_msg_id}> On Tue, 05 Jan 2010 15:43:56 -0000, ☃ wrote: -> Encoding" +> Encoding +OK" test_begin_subtest "Reply with RFC 2047-encoded headers (JSON)" -output=$(notmuch reply --format=json id:${gen_msg_id}) +output=$(echo '{"answer":' && notmuch reply --format=json id:${gen_msg_id} 2>&1 | notmuch_json_show_sanitize \ + && echo ', "success": "OK"}') test_expect_equal_json "$output" ' -{ +{ "answer": { "original": { "body": [ { @@ -227,16 +310,17 @@ test_expect_equal_json "$output" ' "id": 1 } ], + "crypto": {}, "date_relative": "2010-01-05", "excluded": false, - "filename": ["'${MAIL_DIR}'/msg-012"], + "filename": ["YYYYY"], "headers": { "Date": "Tue, 05 Jan 2010 15:43:56 +0000", "From": "\u2603 ", "Subject": "\u00e0\u00df\u00e7", "To": "Notmuch Test Suite " }, - "id": "'${gen_msg_id}'", + "id": "XXXXX", "match": false, "tags": [ "inbox", @@ -251,11 +335,13 @@ test_expect_equal_json "$output" ' "Subject": "Re: \u00e0\u00df\u00e7", "To": "\u2603 " } + }, + "success": "OK" }' test_begin_subtest "Reply to a message with multiple Cc headers" add_email_corpus broken -output=$(notmuch reply id:multiple-cc@example.org) +output=$(notmuch reply id:multiple-cc@example.org 2>&1 && echo OK) test_expect_equal "$output" "From: Notmuch Test Suite Subject: Re: wowsers! To: Alice , Daniel @@ -264,6 +350,43 @@ In-Reply-To: References: On Thu, 16 Jun 2016 22:14:41 -0400, Alice wrote: -> Note the Cc: and cc: headers." +> Note the Cc: and cc: headers. +OK" + +add_email_corpus duplicate + +ID1=debian/2.6.1.dfsg-4-1-g87ea161@87ea161e851dfb1ea324af00e4ecfccc18875e15 + +test_begin_subtest "format json, --duplicate=2, duplicate key" +output=$(notmuch reply --format=json --duplicate=2 id:${ID1}) +test_json_nodes <<<"$output" "dup:['original']['duplicate']=2" + +test_begin_subtest "format json, subject, --duplicate=1" +output=$(notmuch reply --format=json --duplicate=1 id:${ID1}) +file=$(notmuch search --output=files id:${ID1} | head -n 1) +subject=$(sed -n 's/^Subject: \(.*\)$/\1/p' < $file) +test_json_nodes <<<"$output" "subject:['reply-headers']['Subject']=\"Re: $subject\"" + +test_begin_subtest "format json, subject, --duplicate=2" +output=$(notmuch reply --format=json --duplicate=2 id:${ID1}) +file=$(notmuch search --output=files id:${ID1} | tail -n 1) +subject=$(sed -n 's/^Subject: \(.*\)$/\1/p' < $file) +test_json_nodes <<<"$output" "subject:['reply-headers']['Subject']=\"Re: $subject\"" + +ID2=87r2geywh9.fsf@tethera.net +for dup in {1..2}; do + test_begin_subtest "format json, body, --duplicate=${dup}" + output=$(notmuch reply --format=json --duplicate=${dup} id:${ID2} | \ + $NOTMUCH_PYTHON -B "$NOTMUCH_SRCDIR"/test/json_check_nodes.py "body:['original']['body'][0]['content']" | \ + grep '^# body') + test_expect_equal "$output" "# body ${dup}" +done + +ID3=87r2ecrr6x.fsf@zephyr.silentflame.com +for dup in {1..5}; do + test_begin_subtest "format json, --duplicate=${dup}, 'duplicate' key" + output=$(notmuch reply --format=json --duplicate=${dup} id:${ID3}) + test_json_nodes <<<"$output" "dup:['original']['duplicate']=${dup}" +done test_done