Updated version of [1] to address David's review comments, mostly just commit message updates. Also incorporates the multiple corpora support from [2], with the commit message extended a bit, and rebasing patch 2 on top of it. BR, Jani. [1] id:cover.1471088022.git.jani@nikula.org [2] id:1473609824-6258-1-git-send-email-jani@nikula.org Jani Nikula (15): test: make it possible to have multiple corpora test: add known broken test for reply to message with multiple Cc headers cli/reply: push notmuch reply format abstraction lower in the stack cli/reply: reuse show_reply_headers() in headers-only format cli/reply: unify reply format functions cli/reply: reorganize create_reply_message() cli/reply: make references header creation easier to follow cli/reply: reuse create_reply_message() also for headers-only format cli/reply: reduce the reply format abstractions cli/reply: use dedicated functions for reply to mapping cli/reply: check for NULL list first in scan_address_list() cli/reply: return internet address list from get header funcs cli/reply: do not parse Reply-To: header into internet address list twice cli/reply: pass gmime message to Reply-To: redundancy detection cli/reply: only pass gmime message to add recipients to reply message notmuch-reply.c | 435 ++++++++------------- test/T220-reply.sh | 12 + test/corpora/README | 11 + test/corpora/broken/broken-cc | 9 + test/{corpus => corpora/default}/01:2, | 0 test/{corpus => corpora/default}/02:2, | 0 test/{corpus => corpora/default}/bar/17:2, | 0 test/{corpus => corpora/default}/bar/18:2, | 0 test/{corpus => corpora/default}/bar/baz/05:2, | 0 test/{corpus => corpora/default}/bar/baz/23:2, | 0 test/{corpus => corpora/default}/bar/baz/24:2, | 0 test/{corpus => corpora/default}/bar/baz/cur/25:2, | 0 test/{corpus => corpora/default}/bar/baz/cur/26:2, | 0 test/{corpus => corpora/default}/bar/baz/new/27:2, | 0 test/{corpus => corpora/default}/bar/baz/new/28:2, | 0 test/{corpus => corpora/default}/bar/cur/19:2, | 0 test/{corpus => corpora/default}/bar/cur/20:2, | 0 test/{corpus => corpora/default}/bar/new/21:2, | 0 test/{corpus => corpora/default}/bar/new/22:2, | 0 test/{corpus => corpora/default}/cur/29:2, | 0 test/{corpus => corpora/default}/cur/30:2, | 0 test/{corpus => corpora/default}/cur/31:2, | 0 test/{corpus => corpora/default}/cur/32:2, | 0 test/{corpus => corpora/default}/cur/33:2, | 0 test/{corpus => corpora/default}/cur/34:2, | 0 test/{corpus => corpora/default}/cur/35:2, | 0 test/{corpus => corpora/default}/cur/36:2, | 0 test/{corpus => corpora/default}/cur/37:2, | 0 test/{corpus => corpora/default}/cur/38:2, | 0 test/{corpus => corpora/default}/cur/39:2, | 0 test/{corpus => corpora/default}/cur/40:2, | 0 test/{corpus => corpora/default}/cur/41:2, | 0 test/{corpus => corpora/default}/cur/42:2, | 0 test/{corpus => corpora/default}/cur/43:2, | 0 test/{corpus => corpora/default}/cur/44:2, | 0 test/{corpus => corpora/default}/cur/45:2, | 0 test/{corpus => corpora/default}/cur/46:2, | 0 test/{corpus => corpora/default}/cur/47:2, | 0 test/{corpus => corpora/default}/cur/48:2, | 0 test/{corpus => corpora/default}/cur/49:2, | 0 test/{corpus => corpora/default}/cur/50:2, | 0 test/{corpus => corpora/default}/cur/51:2, | 0 test/{corpus => corpora/default}/cur/52:2, | 0 test/{corpus => corpora/default}/cur/53:2, | 0 test/{corpus => corpora/default}/foo/06:2, | 0 test/{corpus => corpora/default}/foo/baz/11:2, | 0 test/{corpus => corpora/default}/foo/baz/12:2, | 0 test/{corpus => corpora/default}/foo/baz/cur/13:2, | 0 test/{corpus => corpora/default}/foo/baz/cur/14:2, | 0 test/{corpus => corpora/default}/foo/baz/new/15:2, | 0 test/{corpus => corpora/default}/foo/baz/new/16:2, | 0 test/{corpus => corpora/default}/foo/cur/07:2, | 0 test/{corpus => corpora/default}/foo/cur/08:2, | 0 test/{corpus => corpora/default}/foo/new/03:2, | 0 test/{corpus => corpora/default}/foo/new/09:2, | 0 test/{corpus => corpora/default}/foo/new/10:2, | 0 test/{corpus => corpora/default}/new/04:2, | 0 test/test-lib.sh | 19 +- 58 files changed, 212 insertions(+), 274 deletions(-) create mode 100644 test/corpora/README create mode 100644 test/corpora/broken/broken-cc rename test/{corpus => corpora/default}/01:2, (100%) rename test/{corpus => corpora/default}/02:2, (100%) rename test/{corpus => corpora/default}/bar/17:2, (100%) rename test/{corpus => corpora/default}/bar/18:2, (100%) rename test/{corpus => corpora/default}/bar/baz/05:2, (100%) rename test/{corpus => corpora/default}/bar/baz/23:2, (100%) rename test/{corpus => corpora/default}/bar/baz/24:2, (100%) rename test/{corpus => corpora/default}/bar/baz/cur/25:2, (100%) rename test/{corpus => corpora/default}/bar/baz/cur/26:2, (100%) rename test/{corpus => corpora/default}/bar/baz/new/27:2, (100%) rename test/{corpus => corpora/default}/bar/baz/new/28:2, (100%) rename test/{corpus => corpora/default}/bar/cur/19:2, (100%) rename test/{corpus => corpora/default}/bar/cur/20:2, (100%) rename test/{corpus => corpora/default}/bar/new/21:2, (100%) rename test/{corpus => corpora/default}/bar/new/22:2, (100%) rename test/{corpus => corpora/default}/cur/29:2, (100%) rename test/{corpus => corpora/default}/cur/30:2, (100%) rename test/{corpus => corpora/default}/cur/31:2, (100%) rename test/{corpus => corpora/default}/cur/32:2, (100%) rename test/{corpus => corpora/default}/cur/33:2, (100%) rename test/{corpus => corpora/default}/cur/34:2, (100%) rename test/{corpus => corpora/default}/cur/35:2, (100%) rename test/{corpus => corpora/default}/cur/36:2, (100%) rename test/{corpus => corpora/default}/cur/37:2, (100%) rename test/{corpus => corpora/default}/cur/38:2, (100%) rename test/{corpus => corpora/default}/cur/39:2, (100%) rename test/{corpus => corpora/default}/cur/40:2, (100%) rename test/{corpus => corpora/default}/cur/41:2, (100%) rename test/{corpus => corpora/default}/cur/42:2, (100%) rename test/{corpus => corpora/default}/cur/43:2, (100%) rename test/{corpus => corpora/default}/cur/44:2, (100%) rename test/{corpus => corpora/default}/cur/45:2, (100%) rename test/{corpus => corpora/default}/cur/46:2, (100%) rename test/{corpus => corpora/default}/cur/47:2, (100%) rename test/{corpus => corpora/default}/cur/48:2, (100%) rename test/{corpus => corpora/default}/cur/49:2, (100%) rename test/{corpus => corpora/default}/cur/50:2, (100%) rename test/{corpus => corpora/default}/cur/51:2, (100%) rename test/{corpus => corpora/default}/cur/52:2, (100%) rename test/{corpus => corpora/default}/cur/53:2, (100%) rename test/{corpus => corpora/default}/foo/06:2, (100%) rename test/{corpus => corpora/default}/foo/baz/11:2, (100%) rename test/{corpus => corpora/default}/foo/baz/12:2, (100%) rename test/{corpus => corpora/default}/foo/baz/cur/13:2, (100%) rename test/{corpus => corpora/default}/foo/baz/cur/14:2, (100%) rename test/{corpus => corpora/default}/foo/baz/new/15:2, (100%) rename test/{corpus => corpora/default}/foo/baz/new/16:2, (100%) rename test/{corpus => corpora/default}/foo/cur/07:2, (100%) rename test/{corpus => corpora/default}/foo/cur/08:2, (100%) rename test/{corpus => corpora/default}/foo/new/03:2, (100%) rename test/{corpus => corpora/default}/foo/new/09:2, (100%) rename test/{corpus => corpora/default}/foo/new/10:2, (100%) rename test/{corpus => corpora/default}/new/04:2, (100%) -- 2.1.4