Re: [BUG] Saving attachments containing UTF-8 chars
authorMichael Stapelberg <michael+nm@stapelberg.de>
Fri, 30 Nov 2012 11:14:57 +0000 (12:14 +0100)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:51:12 +0000 (09:51 -0800)
87/367598c9d4c31cdfd5cba735e8c78a3740f697 [new file with mode: 0644]

diff --git a/87/367598c9d4c31cdfd5cba735e8c78a3740f697 b/87/367598c9d4c31cdfd5cba735e8c78a3740f697
new file mode 100644 (file)
index 0000000..3dc803b
--- /dev/null
@@ -0,0 +1,1296 @@
+Return-Path: <michael@stapelberg.de>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id D1462431FBC\r
+       for <notmuch@notmuchmail.org>; Fri, 30 Nov 2012 03:15:18 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+       tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id sKZYJ9DHkKyZ for <notmuch@notmuchmail.org>;\r
+       Fri, 30 Nov 2012 03:15:13 -0800 (PST)\r
+Received: from mx02.rent-a-guru.de (srv2.rent-a-guru.de [212.86.204.162])\r
+       (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 2D3EC431FAF\r
+       for <notmuch@notmuchmail.org>; Fri, 30 Nov 2012 03:15:13 -0800 (PST)\r
+Received: from infra.in.zekjur.net (infra.in.zekjur.net [79.140.39.194])\r
+       (authenticated bits=0)\r
+       by mx02.rent-a-guru.de (8.13.6/8.13.6) with ESMTP id qAUBEwkp250406397; \r
+       Fri, 30 Nov 2012 12:15:06 +0100 (CET)\r
+Received: from midna.zekjur.net (business-188-111-072-014.static.arcor-ip.net\r
+       [188.111.72.14])\r
+       by infra.in.zekjur.net (Postfix) with ESMTPSA id 48DE04F3B5;\r
+       Fri, 30 Nov 2012 12:14:58 +0100 (CET)\r
+Received: by midna.zekjur.net (Postfix, from userid 101)\r
+       id D59473EFC83; Fri, 30 Nov 2012 12:14:57 +0100 (CET)\r
+From: Michael Stapelberg <michael+nm@stapelberg.de>\r
+To: Mark Walters <markwalters1009@gmail.com>,\r
+       David Bremner <david@tethera.net>, notmuch@notmuchmail.org\r
+Subject: Re: [BUG] Saving attachments containing UTF-8 chars\r
+In-Reply-To: <87boefv3hu.fsf@qmul.ac.uk>\r
+References: <x6sj8xiexi.fsf@midna.zekjur.net> <87d2yzvlpj.fsf@zancas.localnet>\r
+       <x6mwxza2yd.fsf@midna.zekjur.net> <87boefv3hu.fsf@qmul.ac.uk>\r
+User-Agent: Notmuch/0.14 (http://notmuchmail.org) Emacs/24.1.1\r
+       (x86_64-pc-linux-gnu)\r
+Date: Fri, 30 Nov 2012 12:14:57 +0100\r
+Message-ID: <x6vccn1gwe.fsf@midna.zekjur.net>\r
+MIME-Version: 1.0\r
+Content-Type: multipart/mixed; boundary="=-=-="\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Fri, 30 Nov 2012 11:15:19 -0000\r
+\r
+--=-=-=\r
+Content-Type: text/plain\r
+\r
+Hi Mark,\r
+\r
+Mark Walters <markwalters1009@gmail.com> writes:\r
+> I don't think that we expect any tests to fail: they all pass for\r
+> me. Can you say more about what is failing?\r
+Sure. I attached the full output of "make test". Let me know if you need\r
+any more information about my system. My `emacs` is emacs24 24.1+1-4\r
+from Debian.\r
+\r
+-- \r
+Best regards,\r
+Michael\r
+\r
+--=-=-=\r
+Content-Type: text/plain\r
+Content-Disposition: attachment; filename=nm-test-output.txt\r
+Content-Transfer-Encoding: quoted-printable\r
+\r
+INFO: using 2 minute timeout for tests\r
+basic: Testing the test framework itself.\r
+ PASS   success is reported like this\r
+ PASS   test runs if prerequisite is satisfied\r
+ PASS   tests clean up after themselves\r
+ PASS   tests clean up even after a failure\r
+ PASS   failure to clean up causes the test to fail\r
+ PASS   Ensure that all available tests will be run by notmuch-test\r
+ PASS   Ensure that test output is suppressed unless the test fails\r
+ PASS   Ensure that -v does not suppress test output\r
+ PASS   test that mail store was created\r
+ PASS   mail store should be empty\r
+ PASS   NOTMUCH_CONFIG is set and points to an existing file\r
+ PASS   PATH is set to this repository\r
+\r
+help-test: Testing online help\r
+ PASS   notmuch --help\r
+ PASS   notmuch --help tag\r
+ PASS   notmuch help\r
+ PASS   notmuch help tag\r
+ PASS   notmuch --version\r
+\r
+config: Testing "notmuch config"\r
+ PASS   Get string value\r
+ PASS   Get list value\r
+ PASS   Set string value\r
+ PASS   Set string value again\r
+ PASS   Set list value\r
+ PASS   Set list value again\r
+ PASS   Remove key\r
+ PASS   Remove non-existent key\r
+ PASS   List all items\r
+\r
+new: Testing "notmuch new" in several variations\r
+ PASS   No new messages\r
+ PASS   Single new message\r
+ PASS   Multiple new messages\r
+ PASS   No new messages (non-empty DB)\r
+ PASS   New directories\r
+ PASS   Alternate inode order\r
+ PASS   Message moved in\r
+ PASS   Renamed message\r
+ PASS   Deleted message\r
+ PASS   Renamed directory\r
+ PASS   Deleted directory\r
+ PASS   New directory (at end of list)\r
+ PASS   Deleted directory (end of list)\r
+ PASS   New symlink to directory\r
+ PASS   New symlink to a file\r
+ PASS   Broken symlink aborts\r
+ PASS   New two-level directory\r
+ PASS   Deleted two-level directory\r
+ PASS   Support single-message mbox (deprecated)\r
+ PASS   Skip and report non-mail files\r
+ PASS   Ignore files and directories specified in new.ignore\r
+ PASS   Ignore files and directories specified in new.ignore (multiple occu=\r
+rrences)\r
+ PASS   Don't stop for ignored broken symlinks\r
+\r
+count: Testing "notmuch count" for messages and threads\r
+ PASS   message count is the default for notmuch count\r
+ PASS   message count with --output=3Dmessages\r
+ PASS   thread count with --output=3Dthreads\r
+ PASS   thread count is the default for notmuch search\r
+ PASS   count with no matching messages\r
+ PASS   count with no matching threads\r
+\r
+search: Testing "notmuch search" in several variations\r
+ PASS   Search body\r
+ PASS   Search by from:\r
+ PASS   Search by to:\r
+ PASS   Search by subject:\r
+ PASS   Search by subject (utf-8):\r
+ PASS   Search by id:\r
+ PASS   Search by tag:\r
+ PASS   Search by thread:\r
+ PASS   Search body (phrase)\r
+ PASS   Search by from: (address)\r
+ PASS   Search by from: (name)\r
+ PASS   Search by to: (address)\r
+ PASS   Search by to: (name)\r
+ PASS   Search by subject: (phrase)\r
+ PASS   Search for all messages ("*")\r
+ PASS   Search body (utf-8):\r
+\r
+search-output: Testing various settings for "notmuch search --output=3D"\r
+ PASS   --output=3Dthreads\r
+ PASS   --output=3Dthreads --format=3Djson\r
+ PASS   --output=3Dmessages\r
+ PASS   --output=3Dmessages --format=3Djson\r
+ PASS   --output=3Dfiles\r
+ PASS   --output=3Dfiles --format=3Djson\r
+ PASS   --output=3Dtags\r
+ PASS   --output=3Dtags --format=3Djson\r
+ PASS   sanitize output for quoted-printable line-breaks in author and subj=\r
+ect\r
+ PASS   search for non-existent message prints nothing\r
+ PASS   search --format=3Djson for non-existent message prints proper empty=\r
+ json\r
+\r
+search-by-folder: Testing "notmuch search" by folder: (with variations)\r
+ PASS   Single-world folder: specification (multiple results)\r
+ PASS   Two-word path to narrow results to one\r
+ PASS   After removing duplicate instance of matching path\r
+ PASS   After rename, old path returns nothing\r
+ PASS   After rename, new path returns result\r
+\r
+search-position-overlap-bug: Testing that notmuch does not overlap term pos=\r
+itions\r
+ PASS   Search for a@b.c matches\r
+ PASS   Search for x@y.z matches\r
+ PASS   Search for a@y.c must not match\r
+\r
+search-insufficient-from-quoting: Testing messages with unquoted . in name\r
+ PASS   Search by first name\r
+ PASS   Search by last name:\r
+ PASS   Search by address:\r
+ PASS   Search for all messages:\r
+\r
+search-limiting: Testing "notmuch search" --offset and --limit parameters\r
+ PASS   messages: limit does the right thing\r
+ PASS   messages: concatenation of limited searches\r
+ PASS   messages: limit larger than result set\r
+ PASS   messages: limit =3D 0\r
+ PASS   messages: offset does the right thing\r
+ PASS   messages: offset =3D 0\r
+ PASS   messages: negative offset\r
+ PASS   messages: negative offset\r
+ PASS   messages: negative offset combined with limit\r
+ PASS   messages: negative offset combined with equal limit\r
+ PASS   messages: negative offset combined with large limit\r
+ PASS   messages: negative offset larger then results\r
+ PASS   threads: limit does the right thing\r
+ PASS   threads: concatenation of limited searches\r
+ PASS   threads: limit larger than result set\r
+ PASS   threads: limit =3D 0\r
+ PASS   threads: offset does the right thing\r
+ PASS   threads: offset =3D 0\r
+ PASS   threads: negative offset\r
+ PASS   threads: negative offset\r
+ PASS   threads: negative offset combined with limit\r
+ PASS   threads: negative offset combined with equal limit\r
+ PASS   threads: negative offset combined with large limit\r
+ PASS   threads: negative offset larger then results\r
+\r
+excludes: Testing "notmuch search, count and show" with excludes in several=\r
+ variations\r
+ PASS   Search, exclude "deleted" messages from search\r
+ PASS   Search, exclude "deleted" messages from message search\r
+ PASS   Search, exclude "deleted" messages from message search --exclude=3D=\r
+false\r
+ PASS   Search, exclude "deleted" messages from message search (non-existen=\r
+t exclude-tag)\r
+ PASS   Search, exclude "deleted" messages from search, overridden\r
+ PASS   Search, exclude "deleted" messages from threads\r
+ PASS   Search, don't exclude "deleted" messages when --exclude=3Dflag spec=\r
+ified\r
+ PASS   Search, don't exclude "deleted" messages from search if not configu=\r
+red\r
+ PASS   Search, default exclusion (thread summary)\r
+ PASS   Search, default exclusion (messages)\r
+ PASS   Search, exclude=3Dtrue (thread summary)\r
+ PASS   Search, exclude=3Dtrue (messages)\r
+ PASS   Search, exclude=3Dfalse (thread summary)\r
+ PASS   Search, exclude=3Dfalse (messages)\r
+ PASS   Search, exclude=3Dflag (thread summary)\r
+ PASS   Search, exclude=3Dflag (messages)\r
+ PASS   Search, default exclusion: tag in query (thread summary)\r
+ PASS   Search, default exclusion: tag in query (messages)\r
+ PASS   Search, exclude=3Dtrue: tag in query (thread summary)\r
+ PASS   Search, exclude=3Dtrue: tag in query (messages)\r
+ PASS   Search, exclude=3Dfalse: tag in query (thread summary)\r
+ PASS   Search, exclude=3Dfalse: tag in query (messages)\r
+ PASS   Search, exclude=3Dflag: tag in query (thread summary)\r
+ PASS   Search, exclude=3Dflag: tag in query (messages)\r
+ PASS   Count, default exclusion (messages)\r
+ PASS   Count, default exclusion (threads)\r
+ PASS   Count, exclude=3Dtrue (messages)\r
+ PASS   Count, exclude=3Dtrue (threads)\r
+ PASS   Count, exclude=3Dfalse (messages)\r
+ PASS   Count, exclude=3Dfalse (threads)\r
+ PASS   Count, default exclusion: tag in query (messages)\r
+ PASS   Count, default exclusion: tag in query (threads)\r
+ PASS   Count, exclude=3Dtrue: tag in query (messages)\r
+ PASS   Count, exclude=3Dtrue: tag in query (threads)\r
+ PASS   Count, exclude=3Dfalse: tag in query (messages)\r
+ PASS   Count, exclude=3Dfalse: tag in query (threads)\r
+ PASS   Show, default exclusion\r
+ PASS   Show, default exclusion (entire-thread)\r
+ PASS   Show, exclude=3Dtrue\r
+ PASS   Show, exclude=3Dtrue (entire-thread)\r
+ PASS   Show, exclude=3Dfalse\r
+ PASS   Show, exclude=3Dfalse (entire-thread)\r
+\r
+tagging: Testing "notmuch tag"\r
+ PASS   Adding tags\r
+ PASS   Removing tags\r
+ PASS   No tag operations\r
+ PASS   No query\r
+ PASS   Redundant tagging\r
+ PASS   Special characters in tags\r
+ PASS   Tagging order\r
+ PASS   Empty tag names\r
+ PASS   Tag name beginning with -\r
+\r
+json: Testing --format=3Djson output\r
+ PASS   Show message: json\r
+ PASS   Show message: json --body=3Dtrue\r
+ PASS   Show message: json --body=3Dfalse\r
+ PASS   Search message: json\r
+ PASS   Show message: json, utf-8\r
+ PASS   Show message: json, inline attachment filename\r
+ PASS   Search message: json, utf-8\r
+\r
+text: Testing --format=3Dtext output\r
+ PASS   Show message: text\r
+ PASS   Search message: text\r
+ PASS   Show message: text, utf-8\r
+ PASS   Search message: text, utf-8\r
+\r
+multipart: Testing output of multipart message\r
+ PASS   --format=3Dtext --part=3D0, full message\r
+ PASS   --format=3Dtext --part=3D1, message body\r
+ PASS   --format=3Dtext --part=3D2, multipart/mixed\r
+ PASS   --format=3Dtext --part=3D3, rfc822 part\r
+ PASS   --format=3Dtext --part=3D4, rfc822's multipart\r
+ PASS   --format=3Dtext --part=3D5, rfc822's html part\r
+ PASS   --format=3Dtext --part=3D6, rfc822's text part\r
+ PASS   --format=3Dtext --part=3D7, inline attachement\r
+ PASS   --format=3Dtext --part=3D8, plain text part\r
+ PASS   --format=3Dtext --part=3D9, pgp signature (unverified)\r
+ PASS   --format=3Dtext --part=3D8, no part, expect error\r
+ PASS   --format=3Djson --part=3D0, full message\r
+ PASS   --format=3Djson --part=3D1, message body\r
+ PASS   --format=3Djson --part=3D2, multipart/mixed\r
+ PASS   --format=3Djson --part=3D3, rfc822 part\r
+ PASS   --format=3Djson --part=3D4, rfc822's multipart/alternative\r
+ PASS   --format=3Djson --part=3D5, rfc822's html part\r
+ PASS   --format=3Djson --part=3D6, rfc822's text part\r
+ PASS   --format=3Djson --part=3D7, inline attachment\r
+ PASS   --format=3Djson --part=3D8, plain text part\r
+ PASS   --format=3Djson --part=3D9, pgp signature (unverified)\r
+ PASS   --format=3Djson --part=3D10, no part, expect error\r
+ PASS   --format=3Draw\r
+ PASS   --format=3Draw --part=3D0, full message\r
+ PASS   --format=3Draw --part=3D1, message body\r
+ PASS   --format=3Draw --part=3D2, multipart/mixed\r
+ PASS   --format=3Draw --part=3D3, rfc822 part\r
+ PASS   --format=3Draw --part=3D4, rfc822's multipart\r
+ PASS   --format=3Draw --part=3D5, rfc822's html part\r
+ PASS   --format=3Draw --part=3D6, rfc822's text part\r
+ PASS   --format=3Draw --part=3D7, inline attachment\r
+ PASS   --format=3Draw --part=3D8, plain text part\r
+ PASS   --format=3Draw --part=3D9, pgp signature (unverified)\r
+ PASS   --format=3Draw --part=3D10, no part, expect error\r
+ PASS   --format=3Dmbox\r
+ PASS   --format=3Dmbox --part=3D1, incompatible, expect error\r
+ FAIL   'notmuch reply' to a multipart message\r
+       --- multipart.37.OUTPUT 2012-11-30 11:12:08.871828702 +0000\r
+       +++ multipart.37.EXPECTED       2012-11-30 11:12:08.871828702 +0000\r
+       @@ -1,5 +1,3 @@\r
+       -address_match(cworth@cworth.org)\r
+       -address_match(cworth@cworth.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: Multipart message\r
+        To: Carl Worth <cworth@cworth.org>, cworth@cworth.org\r
+ FAIL   'notmuch reply' to a multipart message with json format\r
+       --- multipart.38.expected       2012-11-30 11:12:08.919827944 +0000\r
+       +++ multipart.38.output 2012-11-30 11:12:08.919827944 +0000\r
+       @@ -1,89 +1,3 @@\r
+       -{\r
+       -    "original": {\r
+       -        "body": [\r
+       -            {\r
+       -                "content": [\r
+       -                    {\r
+       -                        "content": [\r
+       -                            {\r
+       -                                "content": [\r
+       -                                    {\r
+       -                                        "body": [\r
+       -                                            {\r
+       -                                                "content": [\r
+       -                                                    {\r
+       -                                                        "content-type": "=\r
+text/html",=20\r
+       -                                                        "id": 5\r
+       -                                                    },=20\r
+       -                                                    {\r
+       -                                                        "content": "This =\r
+is an embedded message, with a multipart/alternative part.\n",=20\r
+       -                                                        "content-type": "=\r
+text/plain",=20\r
+       -                                                        "id": 6\r
+       -                                                    }\r
+       -                                                ],=20\r
+       -                                                "content-type": "multipar=\r
+t/alternative",=20\r
+       -                                                "id": 4\r
+       -                                            }\r
+       -                                        ],=20\r
+       -                                        "headers": {\r
+       -                                            "Date": "Fri, 05 Jan 2001 15:=\r
+42:57 +0000",=20\r
+       -                                            "From": "Carl Worth <cworth@c=\r
+worth.org>",=20\r
+       -                                            "Subject": "html message",=20\r
+       -                                            "To": "cworth@cworth.org"\r
+       -                                        }\r
+       -                                    }\r
+       -                                ],=20\r
+       -                                "content-type": "message/rfc822",=20\r
+       -                                "id": 3\r
+       -                            },=20\r
+       -                            {\r
+       -                                "content": "This is a text attachment.\n"=\r
+,=20\r
+       -                                "content-type": "text/plain",=20\r
+       -                                "filename": "YYYYY",=20\r
+       -                                "id": 7\r
+       -                            },=20\r
+       -                            {\r
+       -                                "content": "And this message is signed.\n=\r
+\n-Carl\n",=20\r
+       -                                "content-type": "text/plain",=20\r
+       -                                "id": 8\r
+       -                            }\r
+       -                        ],=20\r
+       -                        "content-type": "multipart/mixed",=20\r
+       -                        "id": 2\r
+       -                    },=20\r
+       -                    {\r
+       -                        "content-type": "application/pgp-signature",=20\r
+       -                        "id": 9\r
+       -                    }\r
+       -                ],=20\r
+       -                "content-type": "multipart/signed",=20\r
+       -                "id": 1\r
+       -            }\r
+       -        ],=20\r
+       -        "date_relative": "2001-01-05",=20\r
+       -        "excluded": false,=20\r
+       -        "filename": "YYYYY",=20\r
+       -        "headers": {\r
+       -            "Date": "Fri, 05 Jan 2001 15:43:57 +0000",=20\r
+       -            "From": "Carl Worth <cworth@cworth.org>",=20\r
+       -            "Subject": "Multipart message",=20\r
+       -            "To": "cworth@cworth.org"\r
+       -        },=20\r
+       -        "id": "XXXXX",=20\r
+       -        "match": false,=20\r
+       -        "tags": [\r
+       -            "attachment",=20\r
+       -            "inbox",=20\r
+       -            "signed",=20\r
+       -            "unread"\r
+       -        ],=20\r
+       -        "timestamp": 978709437\r
+       -    },=20\r
+       -    "reply-headers": {\r
+       -        "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",=20\r
+       -        "In-reply-to": "<87liy5ap00.fsf@yoom.home.cworth.org>",=20\r
+       -        "References": " <87liy5ap00.fsf@yoom.home.cworth.org>",=20\r
+       -        "Subject": "Re: Multipart message",=20\r
+       -        "To": "Carl Worth <cworth@cworth.org>, cworth@cworth.org"\r
+       -    }\r
+       -}\r
+       +address_match(cworth@cworth.org)\r
+       +address_match(cworth@cworth.org)\r
+       +{"reply-headers": {"Subject": "Re: Multipart message", "From": "Notmuch T=\r
+est Suite <test_suite@notmuchmail.org>", "To": "Carl Worth <cworth@cworth.o=\r
+rg>, cworth@cworth.org", "In-reply-to": "<87liy5ap00.fsf@yoom.home.cworth.o=\r
+rg>", "References": " <87liy5ap00.fsf@yoom.home.cworth.org>"}, "original": =\r
+{"id": "XXXXX", "match": false, "excluded": false, "filename": "YYYYY", "ti=\r
+mestamp": 978709437, "date_relative": "2001-01-05", "tags": ["attachment", =\r
+"inbox", "signed", "unread"], "headers": {"Subject": "Multipart message", "=\r
+From": "Carl Worth <cworth@cworth.org>", "To": "cworth@cworth.org", "Date":=\r
+ "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [{"id": 1, "content-type": "mu=\r
+ltipart/signed", "content": [{"id": 2, "content-type": "multipart/mixed", "=\r
+content": [{"id": 3, "content-type": "message/rfc822", "content": [{"header=\r
+s": {"Subject": "html message", "From": "Carl Worth <cworth@cworth.org>", "=\r
+To": "cworth@cworth.org", "Date": "Fri, 05 Jan 2001 15:42:57 +0000"}, "body=\r
+": [{"id": 4, "content-type": "multipart/alternative", "content": [{"id": 5=\r
+, "content-type": "text/html"}, {"id": 6, "content-type": "text/plain", "co=\r
+ntent": "This is an embedded message, with a multipart/alternative part.\n"=\r
+}]}]}]}, {"id": 7, "content-type": "text/plain", "filename": "YYYYY", "cont=\r
+ent": "This is a text attachment.\n"}, {"id": 8, "content-type": "text/plai=\r
+n", "content": "And this message is signed.\n\n-Carl\n"}]}, {"id": 9, "cont=\r
+ent-type": "application/pgp-signature"}]}]}}\r
+No JSON object could be decoded\r
+ PASS   'notmuch show --part' does not corrupt a part with CRLF pair\r
+\r
+thread-naming: Testing naming of threads with changing subject\r
+ PASS   Initial thread name (oldest-first search)\r
+ PASS   Initial thread name (newest-first search)\r
+ PASS   Changed thread name (oldest-first search)\r
+ PASS   Changed thread name (newest-first search)\r
+ PASS   Ignore added reply prefix (Re:)\r
+ PASS   Ignore added reply prefix (Aw:)\r
+ PASS   Ignore added reply prefix (Vs:)\r
+ PASS   Ignore added reply prefix (Sv:)\r
+ PASS   Test order of messages in "notmuch show"\r
+\r
+raw: Testing notmuch show --format=3Draw\r
+ PASS   Attempt to show multiple raw messages\r
+ PASS   Show a raw message\r
+ PASS   Show another raw message\r
+\r
+reply: Testing "notmuch reply" in several variations\r
+ FAIL   Basic reply\r
+       --- reply.1.expected    2012-11-30 11:12:09.207823395 +0000\r
+       +++ reply.1.output      2012-11-30 11:12:09.207823395 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   Multiple recipients\r
+       --- reply.2.expected    2012-11-30 11:12:09.223823144 +0000\r
+       +++ reply.2.output      2012-11-30 11:12:09.223823144 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(someone@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, Someone Else <someone@example.com>\r
+ FAIL   Reply with CC\r
+       --- reply.3.expected    2012-11-30 11:12:09.239822892 +0000\r
+       +++ reply.3.output      2012-11-30 11:12:09.239822892 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(cc@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   Reply from alternate address\r
+       --- reply.4.expected    2012-11-30 11:12:09.259822574 +0000\r
+       +++ reply.4.output      2012-11-30 11:12:09.259822574 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   Reply from address in named group list\r
+       --- reply.5.expected    2012-11-30 11:12:09.275822323 +0000\r
+       +++ reply.5.output      2012-11-30 11:12:09.275822323 +0000\r
+       @@ -1,3 +1,7 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(someone@example.com)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, someone@example.com\r
+ FAIL   Support for Reply-To\r
+       --- reply.6.expected    2012-11-30 11:12:09.291822071 +0000\r
+       +++ reply.6.output      2012-11-30 11:12:09.291822071 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(elsewhere@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <elsewhere@example.com>\r
+ FAIL   Un-munging Reply-To\r
+       --- reply.7.expected    2012-11-30 11:12:09.307821818 +0000\r
+       +++ reply.7.output      2012-11-30 11:12:09.307821818 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(list@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, Some List <list@example.com>\r
+ FAIL   Message with header of exactly 200 bytes\r
+       --- reply.8.expected    2012-11-30 11:12:09.323821564 +0000\r
+       +++ reply.8.output      2012-11-30 11:12:09.323821564 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: This subject is exactly 200 bytes in length. Other than its =\r
+length there is not much of note here. Note that the length of 200 bytes in=\r
+cludes the Subject: and Re: prefixes with two spaces\r
+        In-Reply-To: <msg-008@notmuch-test-suite>\r
+ FAIL   From guessing: Envelope-To\r
+       --- reply.9.expected    2012-11-30 11:12:09.339821311 +0000\r
+       +++ reply.9.output      2012-11-30 11:12:09.339821311 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(recipient@example.com)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: From guessing\r
+        To: Sender <sender@example.com>, Recipient <recipient@example.com>\r
+ FAIL   From guessing: X-Original-To\r
+       --- reply.10.expected   2012-11-30 11:12:09.359820997 +0000\r
+       +++ reply.10.output     2012-11-30 11:12:09.359820997 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(recipient@example.com)\r
+       +address_match(test_suite@otherdomain.org)\r
+        From: Notmuch Test Suite <test_suite@otherdomain.org>\r
+        Subject: Re: From guessing\r
+        To: Sender <sender@example.com>, Recipient <recipient@example.com>\r
+ FAIL   From guessing: Delivered-To\r
+       --- reply.11.expected   2012-11-30 11:12:09.375820743 +0000\r
+       +++ reply.11.output     2012-11-30 11:12:09.375820743 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(recipient@example.com)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: From guessing\r
+        To: Sender <sender@example.com>, Recipient <recipient@example.com>\r
+\r
+reply-to-sender: Testing "notmuch reply --reply-to=3Dsender" in several var=\r
+iations\r
+ FAIL   Basic reply-to-sender\r
+       --- reply-to-sender.1.expected  2012-11-30 11:12:09.419820050 +0000\r
+       +++ reply-to-sender.1.output    2012-11-30 11:12:09.419820050 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   From Us, Basic reply to message\r
+       --- reply-to-sender.2.expected  2012-11-30 11:12:09.439819734 +0000\r
+       +++ reply-to-sender.2.output    2012-11-30 11:12:09.439819734 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(recipient@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Recipient <recipient@example.com>\r
+ FAIL   Multiple recipients\r
+       --- reply-to-sender.3.expected  2012-11-30 11:12:09.455819480 +0000\r
+       +++ reply-to-sender.3.output    2012-11-30 11:12:09.455819480 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(someone@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   From Us, Multiple TO recipients\r
+       --- reply-to-sender.4.expected  2012-11-30 11:12:09.475819164 +0000\r
+       +++ reply-to-sender.4.output    2012-11-30 11:12:09.475819164 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(recipient@example.com)\r
+       +address_match(someone@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Recipient <recipient@example.com>, Someone Else <someone@example.com>\r
+ FAIL   Reply with CC\r
+       --- reply-to-sender.5.expected  2012-11-30 11:12:09.491818913 +0000\r
+       +++ reply-to-sender.5.output    2012-11-30 11:12:09.491818913 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   From Us, Reply with CC\r
+       --- reply-to-sender.6.expected  2012-11-30 11:12:09.507818659 +0000\r
+       +++ reply-to-sender.6.output    2012-11-30 11:12:09.507818659 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(recipient@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Recipient <recipient@example.com>\r
+ FAIL   From Us, Reply no TO but with CC\r
+       --- reply-to-sender.7.expected  2012-11-30 11:12:09.523818406 +0000\r
+       +++ reply-to-sender.7.output    2012-11-30 11:12:09.523818406 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(cc@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        Cc: Other Parties <cc@example.com>\r
+ FAIL   Reply from alternate address\r
+       --- reply-to-sender.8.expected  2012-11-30 11:12:09.539818155 +0000\r
+       +++ reply-to-sender.8.output    2012-11-30 11:12:09.539818155 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   Support for Reply-To\r
+       --- reply-to-sender.9.expected  2012-11-30 11:12:09.559817838 +0000\r
+       +++ reply-to-sender.9.output    2012-11-30 11:12:09.559817838 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(elsewhere@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <elsewhere@example.com>\r
+ FAIL   Support for Reply-To with multiple recipients\r
+       --- reply-to-sender.10.expected 2012-11-30 11:12:09.575817588 +0000\r
+       +++ reply-to-sender.10.output   2012-11-30 11:12:09.575817588 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(elsewhere@example.com)\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(someone@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <elsewhere@example.com>\r
+ FAIL   Un-munging Reply-To\r
+       --- reply-to-sender.11.expected 2012-11-30 11:12:09.591817332 +0000\r
+       +++ reply-to-sender.11.output   2012-11-30 11:12:09.591817332 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(list@example.com)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>\r
+ FAIL   Message with header of exactly 200 bytes\r
+       --- reply-to-sender.12.expected 2012-11-30 11:12:09.611817017 +0000\r
+       +++ reply-to-sender.12.output   2012-11-30 11:12:09.611817017 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: This subject is exactly 200 bytes in length. Other than its =\r
+length there is not much of note here. Note that the length of 200 bytes in=\r
+cludes the Subject: and Re: prefixes with two spaces\r
+        In-Reply-To: <msg-012@notmuch-test-suite>\r
+\r
+dump-restore: Testing "notmuch dump" and "notmuch restore"\r
+ PASS   Dumping all tags\r
+ PASS   Dumping all tags II\r
+ PASS   Clearing all tags\r
+ PASS   Accumulate original tags\r
+ PASS   Restoring original tags\r
+ PASS   Restore with nothing to do\r
+ PASS   Accumulate with existing tags\r
+ PASS   Accumulate with no tags\r
+ PASS   Accumulate with new tags\r
+ PASS   Invalid restore invocation\r
+ PASS   dump --output=3Doutfile\r
+ PASS   dump --output=3Doutfile --\r
+ PASS   dump -- from:cworth\r
+ PASS   dump --output=3Doutfile from:cworth\r
+ PASS   dump --output=3Doutfile -- from:cworth\r
+\r
+uuencode: Testing handling of uuencoded data\r
+ PASS   Ensure content before uu data is indexed\r
+ PASS   Ensure uu data is not indexed\r
+ PASS   Ensure content after uu data is indexed\r
+\r
+thread-order: Testing threading when messages received out of order\r
+ PASS   Adding initial child message\r
+ PASS   Searching returns the message\r
+ PASS   Adding second child message\r
+ PASS   Searching returns both messages in one thread\r
+ PASS   Adding parent message\r
+ PASS   Searching returns all three messages in one thread\r
+\r
+author-order: Testing author reordering;\r
+ PASS   Adding parent message\r
+ PASS   Adding initial child message\r
+ PASS   Adding second child message\r
+ PASS   Searching when all three messages match\r
+ PASS   Searching when two messages match\r
+ PASS   Searching when only one message matches\r
+ PASS   Searching when only first message matches\r
+ PASS   Adding duplicate author\r
+ PASS   Searching when all four messages match\r
+ PASS   Adding non-monotonic child message\r
+ PASS   Searching non-monotonic messages (oldest-first)\r
+ PASS   Searching non-monotonic messages (newest-first)\r
+\r
+from-guessing: Testing From line heuristics (with multiple configured addre=\r
+sses)\r
+ FAIL   Magic from guessing (nothing to go on)\r
+       --- from-guessing.1.expected    2012-11-30 11:12:10.251806912 +0000\r
+       +++ from-guessing.1.output      2012-11-30 11:12:10.251806912 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (Envelope-to:)\r
+       --- from-guessing.2.expected    2012-11-30 11:12:10.271806599 +0000\r
+       +++ from-guessing.2.output      2012-11-30 11:12:10.271806599 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (X-Original-To:)\r
+       --- from-guessing.3.expected    2012-11-30 11:12:10.287806344 +0000\r
+       +++ from-guessing.3.output      2012-11-30 11:12:10.287806344 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (Received: .. for ..)\r
+       --- from-guessing.4.expected    2012-11-30 11:12:10.307806030 +0000\r
+       +++ from-guessing.4.output      2012-11-30 11:12:10.307806030 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match( for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 0=\r
+7:54:51 -0400 (EDT))\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (Received: domain)\r
+       --- from-guessing.5.expected    2012-11-30 11:12:10.323805778 +0000\r
+       +++ from-guessing.5.output      2012-11-30 11:12:10.323805778 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match(otherdomain.org)\r
+        From: Notmuch Test Suite <test_suite@otherdomain.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (multiple Received: headers)\r
+       --- from-guessing.6.expected    2012-11-30 11:12:10.339805525 +0000\r
+       +++ from-guessing.6.output      2012-11-30 11:12:10.339805525 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match( for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 0=\r
+7:54:51 -0400 (EDT) from extraneous.example.com (extraneous.example.com [1.=\r
+1.1.1]))\r
+        From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ PASS   Testing From line heuristics (with single configured address)\r
+ FAIL   Magic from guessing (nothing to go on)\r
+       --- from-guessing.8.expected    2012-11-30 11:12:10.359805207 +0000\r
+       +++ from-guessing.8.output      2012-11-30 11:12:10.359805207 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (Envelope-to:)\r
+       --- from-guessing.9.expected    2012-11-30 11:12:10.375804955 +0000\r
+       +++ from-guessing.9.output      2012-11-30 11:12:10.375804955 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (X-Original-To:)\r
+       --- from-guessing.10.expected   2012-11-30 11:12:10.395804641 +0000\r
+       +++ from-guessing.10.output     2012-11-30 11:12:10.395804641 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match(test_suite_other@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (Received: .. for ..)\r
+       --- from-guessing.11.expected   2012-11-30 11:12:10.419804262 +0000\r
+       +++ from-guessing.11.output     2012-11-30 11:12:10.419804262 +0000\r
+       @@ -1,3 +1,7 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match( for <test_suite_other@notmuchmail.org>; Sat, 10 Apr 2010 0=\r
+7:54:51 -0400 (EDT))\r
+       +address_match(notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+ FAIL   Magic from guessing (Received: domain)\r
+       --- from-guessing.12.expected   2012-11-30 11:12:10.435804008 +0000\r
+       +++ from-guessing.12.output     2012-11-30 11:12:10.435804008 +0000\r
+       @@ -1,3 +1,6 @@\r
+       +address_match(sender@example.com)\r
+       +address_match(mailinglist@notmuchmail.org)\r
+       +address_match(otherdomain.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: notmuch-reply-test\r
+        To: Sender <sender@example.com>, mailinglist@notmuchmail.org\r
+\r
+long-id: Testing messages with ridiculously-long message IDs\r
+ PASS   Referencing long ID before adding\r
+ PASS   Adding message with long ID\r
+ PASS   Referencing long ID after adding\r
+ PASS   Ensure all messages were threaded together\r
+\r
+encoding: Testing encoding issues\r
+ PASS   Message with text of unknown charset\r
+ PASS   Search for ISO-8859-2 encoded message\r
+\r
+emacs: Testing emacs interface\r
+ PASS   Basic notmuch-hello view in emacs\r
+ PASS   Saved search with 0 results\r
+ PASS   No saved searches displayed (all with 0 results)\r
+ PASS   Basic notmuch-search view in emacs\r
+ PASS   Incremental parsing of search results\r
+ PASS   Navigation of notmuch-hello to search results\r
+ PASS   Basic notmuch-show view in emacs\r
+ PASS   Basic notmuch-show view in emacs default indentation\r
+ PASS   Basic notmuch-show view in emacs without indentation\r
+ PASS   Basic notmuch-show view in emacs with fourfold indentation\r
+ PASS   notmuch-show for message with invalid From\r
+ PASS   Navigation of notmuch-search to thread view\r
+ PASS   Add tag from search view\r
+ PASS   Remove tag from search view\r
+ PASS   Add tag from notmuch-show view\r
+ PASS   Remove tag from notmuch-show view\r
+ PASS   Message with .. in Message-Id:\r
+ PASS   Message with quote in Message-Id:\r
+ PASS   Sending a message via (fake) SMTP\r
+ PASS   Verify that sent messages are saved/searchable (via FCC)\r
+ PASS   notmuch-fcc-dirs set to nil\r
+ PASS   notmuch-fcc-dirs set to a string\r
+ PASS   notmuch-fcc-dirs set to a list (with match)\r
+ PASS   notmuch-fcc-dirs set to a list (catch-all)\r
+ PASS   notmuch-fcc-dirs set to a list (no match)\r
+ FAIL   Reply within emacs\r
+       --- emacs.26.OUTPUT     2012-11-30 11:12:15.551723246 +0000\r
+       +++ emacs.26.EXPECTED   2012-11-30 11:12:15.551723246 +0000\r
+       @@ -0,0 +1,11 @@\r
+       +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+       +To: user@example.com\r
+       +Subject: Re: Testing message sent via SMTP\r
+       +In-Reply-To: <XXX>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <XXX>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Notmuch Test Suite <test_suite@notmuchmail.org> writes:\r
+       +\r
+       +> This is a test that messages are sent via SMTP\r
+*ERROR*: JSON readtable error\r
+ FAIL   Reply from alternate address within emacs\r
+       --- emacs.27.OUTPUT     2012-11-30 11:12:15.679721226 +0000\r
+       +++ emacs.27.EXPECTED   2012-11-30 11:12:15.683721161 +0000\r
+       @@ -0,0 +1,11 @@\r
+       +From: Notmuch Test Suite <test_suite_other@notmuchmail.org>\r
+       +To: Sender <sender@example.com>\r
+       +Subject: Re: Reply from alternate address within emacs\r
+       +In-Reply-To: <msg-004@notmuch-test-suite>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <msg-004@notmuch-test-suite>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Sender <sender@example.com> writes:\r
+       +\r
+       +> This is just a test message (#4)\r
+*ERROR*: JSON readtable error\r
+ FAIL   Reply from address in named group list within emacs\r
+       --- emacs.28.OUTPUT     2012-11-30 11:12:15.807719203 +0000\r
+       +++ emacs.28.EXPECTED   2012-11-30 11:12:15.811719142 +0000\r
+       @@ -0,0 +1,11 @@\r
+       +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+       +To: Sender <sender@example.com>, someone@example.com\r
+       +Subject: Re: Reply from address in named group list within emacs\r
+       +In-Reply-To: <msg-005@notmuch-test-suite>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <msg-005@notmuch-test-suite>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Sender <sender@example.com> writes:\r
+       +\r
+       +> This is just a test message (#5)\r
+*ERROR*: JSON readtable error\r
+ FAIL   Reply within emacs to a multipart/mixed message\r
+       --- emacs.29.OUTPUT     2012-11-30 11:12:15.859718382 +0000\r
+       +++ emacs.29.EXPECTED   2012-11-30 11:12:15.859718382 +0000\r
+       @@ -0,0 +1,53 @@\r
+       +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+       +To: Adrian Perez de Castro <aperez@igalia.com>, notmuch@notmuchmail.org\r
+       +Subject: Re: [notmuch] Introducing myself\r
+       +In-Reply-To: <20091118002059.067214ed@hikari>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <20091118002059.067214ed@hikari>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Adrian Perez de Castro <aperez@igalia.com> writes:\r
+       +\r
+       +> Hello to all,\r
+       +>\r
+       +> I have just heard about Not Much today in some random Linux-related news\r
+       +> site (LWN?), my name is Adrian Perez and I work as systems administrator\r
+       +> (although I can do some code as well :P). I have always thought that the\r
+       +> ideas behind Sup were great, but after some time using it, I got tired =\r
+of\r
+       +> the oddities that it has. I also do not like doing things like having to\r
+       +> install Ruby just for reading and sorting mails. Some time ago I thought\r
+       +> about doing something like Not Much and in fact I played a bit with the\r
+       +> Python+Xapian and the Python+Whoosh combinations, because I find relaxi=\r
+ng\r
+       +> to code things in Python when I am not working and also it is installed\r
+       +> by default on most distribution. I got to have some mailboxes indexed a=\r
+nd\r
+       +> basic searching working a couple of months ago. Lately I have been very\r
+       +> busy and had no time for coding, and them... boom! Not Much appears -- =\r
+and\r
+       +> it is almost exactly what I was trying to do, but faster. I have been\r
+       +> playing a bit with Not Much today, and I think it has potential.\r
+       +>\r
+       +> Also, I would like to share one idea I had in mind, that you might find\r
+       +> interesting: One thing I have found very annoying is having to re-tag my\r
+       +> mail when the indexes get b0rked (it happened a couple of times to me w=\r
+hile\r
+       +> using Sup), so I was planning to mails as read/unread and adding the ta=\r
+gs\r
+       +> not just to the index, but to the mail text itself, e.g. by adding a\r
+       +> "X-Tags" header field or by reusing the "Keywords" one. This way, the i=\r
+ndex\r
+       +> could be totally recreated by re-reading the mail directories, and this\r
+       +> would also allow to a tools like OfflineIMAP [1] to get the mails into a\r
+       +> local maildir, tagging and indexing the mails with the e-mail reader and\r
+       +> then syncing back the messages with the "X-Tags" header to the IMAP ser=\r
+ver.\r
+       +> This would allow to use the mail reader from a different computer and s=\r
+till\r
+       +> have everything tagged finely.\r
+       +>\r
+       +> Best regards,\r
+       +>\r
+       +>\r
+       +> ---\r
+       +> [1] http://software.complete.org/software/projects/show/offlineimap\r
+       +>\r
+       +> --=20\r
+       +> Adrian Perez de Castro <aperez@igalia.com>\r
+       +> Igalia - Free Software Engineering\r
+       +> _______________________________________________\r
+       +> notmuch mailing list\r
+       +> notmuch@notmuchmail.org\r
+       +> http://notmuchmail.org/mailman/listinfo/notmuch\r
+*ERROR*: JSON readtable error\r
+ FAIL   Reply within emacs to a multipart/alternative message\r
+       --- emacs.30.OUTPUT     2012-11-30 11:12:16.067715102 +0000\r
+       +++ emacs.30.EXPECTED   2012-11-30 11:12:16.067715102 +0000\r
+       @@ -0,0 +1,30 @@\r
+       +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+       +To: Alex Botero-Lowry <alex.boterolowry@gmail.com>, notmuch@notmuchmail.o=\r
+rg\r
+       +Subject: Re: [notmuch] preliminary FreeBSD support\r
+       +In-Reply-To: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Alex Botero-Lowry <alex.boterolowry@gmail.com> writes:\r
+       +\r
+       +> I saw the announcement this morning, and was very excited, as I had been\r
+       +> hoping sup would be turned into a library,\r
+       +> since I like the concept more than the UI (I'd rather an emacs interfac=\r
+e).\r
+       +>\r
+       +> I did a preliminary compile which worked out fine, but\r
+       +> sysconf(_SC_SC_GETPW_R_SIZE_MAX) returns -1 on\r
+       +> FreeBSD, so notmuch_config_open segfaulted.\r
+       +>\r
+       +> Attached is a patch that supplies a default buffer size of 64 in cases =\r
+where\r
+       +> -1 is returned.\r
+       +>\r
+       +> http://www.opengroup.org/austin/docs/austin_328.txt - seems to indicate=\r
+ this\r
+       +> is acceptable behavior,\r
+       +> and http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg016808.htmls=\r
+pecifically\r
+       +> uses 64 as the\r
+       +> buffer size.\r
+       +> _______________________________________________\r
+       +> notmuch mailing list\r
+       +> notmuch@notmuchmail.org\r
+       +> http://notmuchmail.org/mailman/listinfo/notmuch\r
+*ERROR*: JSON readtable error\r
+ FAIL   Reply within emacs to an html-only message\r
+       --- emacs.31.OUTPUT     2012-11-30 11:12:16.111714404 +0000\r
+       +++ emacs.31.EXPECTED   2012-11-30 11:12:16.111714404 +0000\r
+       @@ -0,0 +1,11 @@\r
+       +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+       +To:=20\r
+       +Subject: Re: Reply within emacs to an html-only message\r
+       +In-Reply-To: <msg-006@notmuch-test-suite>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <msg-006@notmuch-test-suite>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Notmuch Test Suite <test_suite@notmuchmail.org> writes:\r
+       +\r
+       +> Hi,This is an HTML test message.OK?\r
+*ERROR*: JSON readtable error\r
+ FAIL   Quote MML tags in reply\r
+       --- emacs.32.OUTPUT     2012-11-30 11:12:16.147713838 +0000\r
+       +++ emacs.32.EXPECTED   2012-11-30 11:12:16.151713776 +0000\r
+       @@ -0,0 +1,11 @@\r
+       +From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+       +To:=20\r
+       +Subject: Re: Quote MML tags in reply\r
+       +In-Reply-To: <test-emacs-mml-quoting@message.id>\r
+       +Fcc: /home/michael/software/notmuch/test/tmp.emacs/mail/sent\r
+       +References: <test-emacs-mml-quoting@message.id>\r
+       +User-Agent: Notmuch/XXX Emacs/XXX\r
+       +--text follows this line--\r
+       +Notmuch Test Suite <test_suite@notmuchmail.org> writes:\r
+       +\r
+       +> <#!part disposition=3Dinline>\r
+*ERROR*: JSON readtable error\r
+ PASS   Save attachment from within emacs using notmuch-show-save-attachmen=\r
+ts\r
+ PASS   Save attachment from within emacs using notmuch-show-save-part\r
+ PASS   Save 8bit attachment from within emacs using notmuch-show-save-atta=\r
+chments\r
+ PASS   View raw message within emacs\r
+ PASS   Hiding/showing signature in notmuch-show view\r
+ PASS   Detection and hiding of top-post quoting of message\r
+ PASS   Hiding message in notmuch-show view\r
+ PASS   Hiding message with visible citation in notmuch-show view\r
+ PASS   notmuch-show: show message headers\r
+ PASS   notmuch-show: hide message headers\r
+ PASS   notmuch-show: hide message headers (w/ notmuch-show-toggle-visibili=\r
+ty-headers)\r
+ PASS   notmuch-show: collapse all messages in thread\r
+ PASS   notmuch-show: uncollapse all messages in thread\r
+ PASS   Stashing in notmuch-show\r
+ PASS   Stashing in notmuch-search\r
+ PASS   notmuch-show-advance-and-archive with invisible signature\r
+ PASS   Refresh show buffer\r
+ PASS   Refresh modified show buffer\r
+ PASS   Do not call notmuch for non-inlinable application/mpeg parts\r
+ PASS   Do not call notmuch for non-inlinable audio/mpeg parts\r
+ PASS   notmuch-hello-mode hook is called\r
+ PASS   notmuch-hello-mode hook is not called on updates\r
+ PASS   notmuch-hello-refresh hook is called\r
+ PASS   notmuch-hello-refresh hook is called on updates\r
+ PASS   Rendering HTML mail with images\r
+\r
+emacs-large-search-buffer: Testing Emacs with large search results buffer\r
+ PASS   Ensure that emacs doesn't drop results\r
+ PASS   Ensure that emacs doesn't drop error messages\r
+\r
+emacs-subject-to-filename: Testing emacs: mail subject to filename\r
+ PASS   no patch sequence number\r
+ PASS   patch sequence number #1\r
+ PASS   patch sequence number #2\r
+ PASS   patch sequence number #3\r
+ PASS   patch sequence number #4\r
+ PASS   patch sequence number #5\r
+ PASS   patch sequence number #6\r
+ PASS   patch sequence number #7\r
+ PASS   filename #1\r
+ PASS   filename #2\r
+ PASS   filename #3\r
+ PASS   filename #4\r
+ PASS   filename #5\r
+ PASS   filename #6\r
+ PASS   filename #7\r
+ PASS   filename #8\r
+ PASS   filename #9\r
+ PASS   patch filename #1\r
+ PASS   patch filename #2\r
+ PASS   patch filename #3\r
+ PASS   patch filename #4\r
+\r
+maildir-sync: Testing maildir synchronization\r
+ PASS   Adding 'S' flag to existing filename removes 'unread' tag\r
+ PASS   Adding message with 'S' flag prevents 'unread' tag\r
+ PASS   Adding 'replied' tag adds 'R' flag to filename\r
+ PASS   notmuch show works with renamed file (without notmuch new)\r
+ PASS   notmuch reply works with renamed file (without notmuch new)\r
+ PASS   notmuch new detects no file rename after tag->flag synchronization\r
+ PASS   When read, message moved from new to cur\r
+ PASS   No rename should be detected by notmuch new\r
+ PASS   Removing 'S' flag from existing filename adds 'unread' tag\r
+ PASS   Removing info from filename leaves tags unchanged\r
+ PASS   Can remove unread tag from message in non-maildir directory\r
+ PASS   Message in non-maildir directory does not get renamed\r
+ PASS   notmuch dump/restore re-synchronizes maildir tags with flags\r
+ PASS   Adding flags to duplicate message tags the mail\r
+ PASS   Adding duplicate message without flags does not remove tags\r
+ PASS   Tag changes modify flags of multiple files\r
+ PASS   Synchronizing tag changes preserves unsupported maildir flags\r
+ PASS   A file with non-compliant maildir info will not be renamed\r
+ PASS   Files in new/ get default synchronized tags\r
+\r
+crypto: Testing PGP/MIME signature verification and decryption\r
+ PASS   emacs delivery of signed message\r
+ PASS   signature verification\r
+ PASS   signature verification with full owner trust\r
+ PASS   signature verification with signer key unavailable\r
+ PASS   emacs delivery of encrypted message with attachment\r
+ PASS   decryption, --format=3Dtext\r
+ PASS   decryption, --format=3Djson\r
+ PASS   decryption, --format=3Djson, --part=3D4\r
+ PASS   decrypt attachment (--part=3D5 --format=3Draw)\r
+ PASS   decryption failure with missing key\r
+ PASS   emacs delivery of encrypted + signed message\r
+ PASS   decryption + signature verification\r
+ FAIL   reply to encrypted message\r
+       --- crypto.13.expected  2012-11-30 11:12:30.559486390 +0000\r
+       +++ crypto.13.output    2012-11-30 11:12:30.559486390 +0000\r
+       @@ -1,3 +1,5 @@\r
+       +address_match(test_suite@notmuchmail.org)\r
+       +address_match(test_suite@notmuchmail.org)\r
+        From: Notmuch Test Suite <test_suite@notmuchmail.org>\r
+        Subject: Re: test encrypted message 002\r
+=09=20\r
+ PASS   signature verification with revoked key\r
+\r
+symbol-hiding: Testing exception symbol hiding\r
+ PASS   running test\r
+ PASS   checking output\r
+ PASS   comparing existing to exported symbols\r
+\r
+search-folder-coherence: Testing folder tags removed and added through file=\r
+ renames remain consistent\r
+ PASS   No new messages\r
+ PASS   Single new message\r
+ PASS   Add second folder for same message\r
+ PASS   Multiple files for same message\r
+ PASS   Test matches folder:spam\r
+ PASS   Remove folder:spam copy of email\r
+ PASS   No mails match the folder:spam search\r
+\r
+atomicity: Testing atomicity\r
+ PASS   "notmuch new" is idempotent under arbitrary aborts\r
+ PASS   detected 22>10 abort points\r
+\r
+python: Testing python bindings\r
+ PASS   compare thread ids\r
+ PASS   compare message ids\r
+ PASS   get non-existent file\r
+\r
+hooks: Testing hooks\r
+ PASS   pre-new is run\r
+ PASS   post-new is run\r
+ PASS   pre-new is run before post-new\r
+ PASS   pre-new non-zero exit status (hook status)\r
+ PASS   pre-new non-zero exit status (notmuch status)\r
+ PASS   pre-new non-zero exit status aborts new\r
+ PASS   post-new non-zero exit status (hook status)\r
+ PASS   post-new non-zero exit status (notmuch status)\r
+ PASS   hook without executable permissions\r
+ PASS   hook execution failure\r
+\r
+argument-parsing: Testing argument parsing\r
+ PASS   sanity check\r
+\r
+emacs-test-functions: Testing emacs test function sanity\r
+ PASS   emacs test function sanity\r
+\r
+emacs-address-cleaning: Testing emacs address cleaning\r
+ PASS   notmuch-test-address-clean part 1\r
+ PASS   notmuch-test-address-clean part 2\r
+ PASS   notmuch-test-address-clean part 3\r
+\r
+emacs-hello: Testing emacs notmuch-hello view\r
+ PASS   User-defined section with inbox tag\r
+ PASS   User-defined section with empty, hidden entry\r
+ PASS   User-defined section, unread tag filtered out\r
+ PASS   User-defined section, different query for counts\r
+ PASS   Empty custom tags section\r
+ PASS   Empty custom queries section\r
+ PASS   Column alignment for tag/queries with long names\r
+\r
+emacs-show: Testing emacs notmuch-show view\r
+ PASS   Hiding Original Message region at beginning of a message\r
+ PASS   Bare subject #1\r
+ PASS   Bare subject #2\r
+ PASS   Bare subject #3\r
+ PASS   don't process cryptographic MIME parts\r
+ PASS   process cryptographic MIME parts\r
+ PASS   process cryptographic MIME parts (w/ notmuch-show-toggle-process-cr=\r
+ypto)\r
+ PASS   notmuch-show: don't elide non-matching messages\r
+ PASS   notmuch-show: elide non-matching messages\r
+ PASS   notmuch-show: elide non-matching messages (w/ notmuch-show-toggle-e=\r
+lide-non-matching)\r
+ PASS   notmuch-show: elide non-matching messages (w/ prefix arg to notmuch=\r
+-show)\r
+ PASS   notmuch-show: disable indentation of thread content (w/ notmuch-sho=\r
+w-toggle-thread-indentation)\r
+ PASS   id buttonization\r
+\r
+missing-headers: Testing messages with missing headers\r
+Added 2 new messages to the database.\r
+ PASS   Search: text\r
+ PASS   Search: json\r
+ PASS   Show: text\r
+ PASS   Show: json\r
+\r
+parse-time-string: Testing date/time parser module\r
+ PASS   date(1) default format without TZ code\r
+ PASS   date(1) --rfc-2822 format\r
+ PASS   date(1) --rfc=3D3339=3Dseconds format\r
+ PASS   Date parser tests\r
+\r
+search-date: Testing date:since..until queries\r
+ PASS   Absolute date range\r
+ PASS   Absolute time range with TZ\r
+\r
+Notmuch test suite complete.\r
+437/481 tests passed.\r
+44 tests failed.\r
+\r
+--=-=-=--\r