unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Jani Nikula <jani@nikula.org>
To: Aaron Ecay <aaronecay@gmail.com>, notmuch@notmuchmail.org
Subject: Re: [PATCH 1/2] test: add tests for the handling of References and In-Reply-To headers
Date: Sat, 04 May 2013 19:23:00 +0300	[thread overview]
Message-ID: <87txmi1zq3.fsf@nikula.org> (raw)
In-Reply-To: <1362540709-28765-1-git-send-email-aaronecay@gmail.com>

On Wed, 06 Mar 2013, Aaron Ecay <aaronecay@gmail.com> wrote:
> These tests are known_broken, the following commit fixes them.
> ---
>
> Thanks to David and Tomi for pointing out test_expect_equal_json.  In
> the process of implementing that, I discovered
> notmuch_json_show_sanitize, which I had also not been using.  This
> patch fixes the test to use both these conveniences.  The second patch
> is not changed substantively, but I am resending it for tidiness.
>
>  test/thread-replies | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 144 insertions(+)
>  create mode 100755 test/thread-replies
>
> diff --git a/test/thread-replies b/test/thread-replies
> new file mode 100755
> index 0000000..a902691
> --- /dev/null
> +++ b/test/thread-replies
> @@ -0,0 +1,144 @@
> +#!/usr/bin/env bash
> +#
> +# Copyright (c) 2013 Aaron Ecay
> +#
> +
> +test_description='test of proper handling of in-reply-to and references headers
> +
> +This test makes sure that the thread structure in the notmuch database is
> +constructed properly, even in the presence of non-RFC-compliant headers'

Nitpick, most other tests have one line test descriptions. The second
paragraph could be left as comment.

> +
> +. ./test-lib.sh
> +
> +test_begin_subtest "Use References when In-Reply-To is broken"
> +test_subtest_known_broken
> +add_message '[id]="foo@one.com"' \
> +    '[subject]=one'
> +add_message '[in-reply-to]="mumble"' \
> +    '[references]="<foo@one.com>"' \
> +    '[subject]="Re: one"'
> +output=$(notmuch show --format=json 'subject:one' | notmuch_json_show_sanitize)
> +expected='[[[{"id": "foo@one.com",
> + "match": true,
> + "excluded": false,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-001",

Please replace the path with:

 "filename": "YYYYY",

Ditto below for all of them.

> + "timestamp": 978709437,
> + "date_relative": "2001-01-05",
> + "tags": ["inbox", "unread"],
> + "headers": {"Subject": "one",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "Date": "Fri, 05 Jan 2001 15:43:57 +0000"},
> + "body": [{"id": 1,
> + "content-type": "text/plain",
> + "content": "This is just a test message (#1)\n"}]},
> + [[{"id": "msg-002@notmuch-test-suite",
> + "match": true, "excluded": false,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-002",
> + "timestamp": 978709437, "date_relative": "2001-01-05",
> + "tags": ["inbox", "unread"], "headers": {"Subject": "Re: one",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "Date": "Fri, 05 Jan 2001 15:43:57 +0000"},
> + "body": [{"id": 1, "content-type": "text/plain",
> + "content": "This is just a test message (#2)\n"}]}, []]]]]]'
> +expected=`echo "$expected" | notmuch_json_show_sanitize`
> +test_expect_equal_json "$output" "$expected"
> +
> +test_begin_subtest "Prefer References to In-Reply-To"
> +test_subtest_known_broken
> +add_message '[id]="foo@two.com"' \
> +    '[subject]=two'
> +add_message '[in-reply-to]="<bar@baz.com>"' \
> +    '[references]="<foo@two.com>"' \
> +    '[subject]="Re: two"'
> +output=$(notmuch show --format=json 'subject:two' | notmuch_json_show_sanitize)
> +expected='[[[{"id": "foo@two.com",
> + "match": true, "excluded": false,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-003",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "two",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "Date": "Fri, 05 Jan 2001 15:43:57 +0000"},
> + "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,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-004",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "Re: two",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "Date": "Fri, 05 Jan 2001 15:43:57 +0000"},
> + "body": [{"id": 1,
> + "content-type": "text/plain", "content": "This is just a test message (#4)\n"}]},
> + []]]]]]'
> +expected=`echo "$expected" | notmuch_json_show_sanitize`
> +test_expect_equal_json "$output" "$expected"
> +
> +test_begin_subtest "Use In-Reply-To when no References"
> +test_subtest_known_broken

As David said, this is not broken currently, as In-Reply-To is used
unconditionally. Just drop the broken annotation, the test itself is
useful.

> +add_message '[id]="foo@three.com"' \
> +    '[subject]="three"'
> +add_message '[in-reply-to]="<foo@three.com>"' \
> +    '[subject]="Re: three"'
> +output=$(notmuch show --format=json 'subject:three' | notmuch_json_show_sanitize)
> +expected='[[[{"id": "foo@three.com", "match": true, "excluded": false,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-005",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "three",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "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,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-006",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "Re: three",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "Date": "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [{"id": 1,
> + "content-type": "text/plain", "content": "This is just a test message (#6)\n"}]},
> + []]]]]]'
> +expected=`echo "$expected" | notmuch_json_show_sanitize`
> +test_expect_equal_json "$output" "$expected"
> +
> +test_begin_subtest "Use last Reference"
> +test_subtest_known_broken
> +add_message '[id]="foo@four.com"' \
> +    '[subject]="four"'
> +add_message '[id]="bar@four.com"' \
> +    '[subject]="not-four"'
> +add_message '[in-reply-to]="<baz@four.com>"' \
> +    '[references]="<baz@four.com> <foo@four.com>"' \
> +    '[subject]="neither"'
> +output=$(notmuch show --format=json 'subject:four' | notmuch_json_show_sanitize)
> +expected='[[[{"id": "foo@four.com", "match": true, "excluded": false,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-007",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "four",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "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,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-009",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "neither",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "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,
> + "filename": "/home/aecay/development/notmuch/notmuch-git/src/notmuch/test/tmp.thread-replies/mail/msg-008",
> + "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["inbox", "unread"],
> + "headers": {"Subject": "not-four",
> + "From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
> + "Date": "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [{"id": 1,
> + "content-type": "text/plain", "content": "This is just a test message (#8)\n"}]}, []]]]'
> +expected=`echo "$expected" | notmuch_json_show_sanitize`
> +test_expect_equal_json "$output" "$expected"
> +
> +
> +test_done
> -- 
> 1.8.1.5
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

  parent reply	other threads:[~2013-05-04 16:23 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-25 23:50 [RFC] [PATCH] lib/database.cc: change how the parent of a message is calculated Aaron Ecay
2013-02-26  9:19 ` Jani Nikula
2013-02-26 19:40   ` Aaron Ecay
2013-02-28 19:41 ` Jani Nikula
2013-03-01 17:06   ` Jani Nikula
2013-03-03 23:46     ` Aaron Ecay
2013-03-03 23:55       ` Aaron Ecay
2013-03-04  2:45         ` David Bremner
2013-03-06  3:31           ` [PATCH 1/2] test: add tests for the handling of References and In-Reply-To headers Aaron Ecay
2013-03-06  3:31             ` [PATCH 2/2] lib/database.cc: change how the parent of a message is calculated Aaron Ecay
2013-05-04 14:10               ` David Bremner
2013-05-04 16:24               ` Jani Nikula
2013-05-14  0:43               ` David Bremner
2013-05-04 14:01             ` [PATCH 1/2] test: add tests for the handling of References and In-Reply-To headers David Bremner
2013-05-04 14:03             ` David Bremner
2013-05-04 16:23             ` Jani Nikula [this message]
2013-03-04  5:59         ` [RFC] [PATCH] lib/database.cc: change how the parent of a message is calculated Tomi Ollila

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87txmi1zq3.fsf@nikula.org \
    --to=jani@nikula.org \
    --cc=aaronecay@gmail.com \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).