X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT510-thread-replies.sh;h=2859d29f37f7548c789e10c12311f406528b4bef;hp=6837ff17663002cfb8c4f9f627f2715ed6d2d154;hb=HEAD;hpb=2f4beda434c59f9e2f5b7c32d26543bad7217ad4 diff --git a/test/T510-thread-replies.sh b/test/T510-thread-replies.sh index 6837ff17..35f3ff83 100755 --- a/test/T510-thread-replies.sh +++ b/test/T510-thread-replies.sh @@ -10,6 +10,7 @@ test_description='test of proper handling of in-reply-to and references headers' # non-RFC-compliant headers' . $(dirname "$0")/test-lib.sh || exit 1 +. $NOTMUCH_SRCDIR/test/test-lib-emacs.sh || exit 1 test_begin_subtest "Use References when In-Reply-To is broken" add_message '[id]="foo@one.com"' \ @@ -19,6 +20,7 @@ add_message '[in-reply-to]="mumble"' \ '[subject]="Re: one"' output=$(notmuch show --format=json 'subject:one' | notmuch_json_show_sanitize) expected='[[[{"id": "foo@one.com", + "crypto": {}, "match": true, "excluded": false, "filename": ["YYYYY"], @@ -33,6 +35,7 @@ expected='[[[{"id": "foo@one.com", "content-type": "text/plain", "content": "This is just a test message (#1)\n"}]}, [[{"id": "msg-002@notmuch-test-suite", + "crypto": {}, "match": true, "excluded": false, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", @@ -45,14 +48,15 @@ expected='[[[{"id": "foo@one.com", expected=`echo "$expected" | notmuch_json_show_sanitize` test_expect_equal_json "$output" "$expected" -test_begin_subtest "Prefer References to In-Reply-To" +test_begin_subtest "Prefer References to dodgy In-Reply-To" add_message '[id]="foo@two.com"' \ '[subject]=two' -add_message '[in-reply-to]=""' \ +add_message '[in-reply-to]="Your message of December 31 1999 "' \ '[references]=""' \ '[subject]="Re: two"' output=$(notmuch show --format=json 'subject:two' | notmuch_json_show_sanitize) expected='[[[{"id": "foo@two.com", + "crypto": {}, "match": true, "excluded": false, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], @@ -63,6 +67,7 @@ expected='[[[{"id": "foo@two.com", "body": [{"id": 1, "content-type": "text/plain", "content": "This is just a test message (#3)\n"}]}, [[{"id": "msg-004@notmuch-test-suite", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "Re: two", @@ -82,6 +87,7 @@ add_message '[in-reply-to]=""' \ '[subject]="Re: three"' output=$(notmuch show --format=json 'subject:three' | notmuch_json_show_sanitize) expected='[[[{"id": "foo@three.com", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "three", @@ -90,6 +96,7 @@ expected='[[[{"id": "foo@three.com", "match": true, "excluded": false, "Date": "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "This is just a test message (#5)\n"}]}, [[{"id": "msg-006@notmuch-test-suite", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "Re: three", @@ -101,16 +108,17 @@ expected='[[[{"id": "foo@three.com", "match": true, "excluded": false, expected=`echo "$expected" | notmuch_json_show_sanitize` test_expect_equal_json "$output" "$expected" -test_begin_subtest "Use last Reference" +test_begin_subtest "Use last Reference when In-Reply-To is dodgy" add_message '[id]="foo@four.com"' \ '[subject]="four"' add_message '[id]="bar@four.com"' \ '[subject]="not-four"' -add_message '[in-reply-to]=""' \ +add_message '[in-reply-to]=" (RFC822 4lyfe)"' \ '[references]=" "' \ '[subject]="neither"' output=$(notmuch show --format=json 'subject:four' | notmuch_json_show_sanitize) expected='[[[{"id": "foo@four.com", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "four", @@ -119,6 +127,7 @@ expected='[[[{"id": "foo@four.com", "match": true, "excluded": false, "Date": "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "This is just a test message (#7)\n"}]}, [[{"id": "msg-009@notmuch-test-suite", "match": false, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "neither", @@ -127,6 +136,7 @@ expected='[[[{"id": "foo@four.com", "match": true, "excluded": false, "Date": "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "This is just a test message (#9)\n"}]}, []]]]], [[{"id": "bar@four.com", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "not-four", @@ -145,6 +155,7 @@ add_message '[id]="bar@five.com"' \ '[subject]="not-five"' output=$(notmuch show --format=json 'subject:five' | notmuch_json_show_sanitize) expected='[[[{"id": "XXXXX", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 42, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "five", "From": "Notmuch Test Suite ", @@ -153,6 +164,7 @@ expected='[[[{"id": "XXXXX", "match": true, "excluded": false, "content-type": "text/plain", "content": "This is just a test message (#10)\n"}]}, [[{"id": "XXXXX", "match": true, "excluded": false, + "crypto": {}, "filename": ["YYYYY"], "timestamp": 42, "date_relative": "2001-01-05", "tags": ["inbox", "unread"], "headers": {"Subject": "not-five", @@ -164,5 +176,62 @@ expected='[[[{"id": "XXXXX", "match": true, "excluded": false, expected=`echo "$expected" | notmuch_json_show_sanitize` test_expect_equal_json "$output" "$expected" +add_email_corpus threading + +test_begin_subtest "reply to ghost" +notmuch show --entire-thread=true id:000-real-root@example.org | grep ^Subject: | head -1 > OUTPUT +cat < EXPECTED +Subject: root message +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "reply to ghost (tree view)" +test_emacs '(notmuch-tree "id:000-real-root@example.org") + (notmuch-test-wait) + (test-output) + (delete-other-windows)' +cat < EXPECTED + 2016-06-17 Alice ┬►root message (inbox unread) + 2016-06-18 Alice ╰┬►child message (inbox unread) + 2016-06-17 Mallory ├─►fake root message (inbox unread) + 2016-06-18 Alice ├┬►grand-child message (inbox unread) + 2016-06-18 Alice │╰─►great grand-child message (inbox unread) + 2016-06-18 Daniel ╰─►grand-child message 2 (inbox unread) +End of search results. +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "reply to ghost (RT)" +notmuch show --entire-thread=true id:87bmc6lp3h.fsf@len.workgroup | grep ^Subject: | head -1 > OUTPUT +cat < EXPECTED +Subject: FYI: xxxx xxxxxxx xxxxxxxxxxxx xxx +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "reply to ghost (RT/tree view)" +test_emacs '(notmuch-tree "id:87bmc6lp3h.fsf@len.workgroup") + (notmuch-test-wait) + (test-output) + (delete-other-windows)' +cat < EXPECTED + 2016-06-19 Gregor Zattler ┬┬►FYI: xxxx xxxxxxx xxxxxxxxxxxx xxx (inbox unread) + 2016-06-19 via RT │╰─►[support.xxxxxxxxxxx-xxxxxxxxx-xxxxxxxxx.de #33575] AutoReply: FYI: xxxx xxxxxxx xxxxxxxxxxxx xxx (inbox unread) + 2016-06-26 via RT ╰─►[support.xxxxxxxxxxx-xxxxxxxxx-xxxxxxxxx.de #33575] Resolved: FYI: xxxx xxxxxxx xxxxxxxxxxxx xxx (inbox unread) +End of search results. +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "trusting reply-to (tree view)" +test_emacs '(notmuch-tree "id:B00-root@example.org") + (notmuch-test-wait) + (test-output) + (delete-other-windows)' +cat < EXPECTED + 2016-06-17 Alice ┬►root message (inbox unread) + 2016-06-18 Alice ╰┬►child message (inbox unread) + 2016-06-18 Alice ╰─►grand-child message (inbox unread) +End of search results. +EOF +test_expect_equal_file EXPECTED OUTPUT test_done