--- /dev/null
+Return-Path: <jani@nikula.org>\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 8733A431FAF\r
+ for <notmuch@notmuchmail.org>; Sat, 1 Dec 2012 16:06:27 -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 R27eZCrTp7m4 for <notmuch@notmuchmail.org>;\r
+ Sat, 1 Dec 2012 16:06:23 -0800 (PST)\r
+Received: from mail-lb0-f181.google.com (mail-lb0-f181.google.com\r
+ [209.85.217.181]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
+ (No client certificate requested)\r
+ by olra.theworths.org (Postfix) with ESMTPS id 9F2FB431FBC\r
+ for <notmuch@notmuchmail.org>; Sat, 1 Dec 2012 16:06:22 -0800 (PST)\r
+Received: by mail-lb0-f181.google.com with SMTP id ge1so1533590lbb.26\r
+ for <notmuch@notmuchmail.org>; Sat, 01 Dec 2012 16:06:21 -0800 (PST)\r
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r
+ d=google.com; s=20120113;\r
+ h=from:to:subject:in-reply-to:references:user-agent:date:message-id\r
+ :mime-version:content-type:x-gm-message-state;\r
+ bh=sLrnMgbnU3wDrN3r99B6O5XpsiHb20Bk1S7FLltorXs=;\r
+ b=Zqw6Wr5Gv+hgIR2Ir13xuukedMfobtIGS6d1vOipDTlY0bciuMsE2keoehJXtIU2oK\r
+ O6GaI91jEiW+f66Zv93VEandq3mLuMHNHpbSJpqcoKt7AUVR8mxWOHGTMU2MxhcRX27m\r
+ fSp/gwzI7H3NQE3x9wRgmlAM+BheZ8nt97nw799P3JUBXh69WLiBS6YU6zFv/Z0h42VO\r
+ Kumi5JtiVT0JsYhXzNE8UymfYwYlO6LG/Wav6iUgwIOnJ+KCCFnI3IrvAB2v8ma5BGXt\r
+ XDI28ULyx5ls7yPMPXtooRmIY6WkQxWdANdmARf4Mo3mnfhzdmd3Tn+txwyvPeiNlPt1\r
+ holA==\r
+Received: by 10.152.104.77 with SMTP id gc13mr5359557lab.16.1354406780793;\r
+ Sat, 01 Dec 2012 16:06:20 -0800 (PST)\r
+Received: from localhost (dsl-hkibrasgw4-fe51df00-27.dhcp.inet.fi.\r
+ [80.223.81.27])\r
+ by mx.google.com with ESMTPS id l9sm3615478lbf.7.2012.12.01.16.06.19\r
+ (version=SSLv3 cipher=OTHER); Sat, 01 Dec 2012 16:06:19 -0800 (PST)\r
+From: Jani Nikula <jani@nikula.org>\r
+To: david@tethera.net, notmuch@notmuchmail.org\r
+Subject: Re: [PATCH] test: add test for notmuch tag --batch option\r
+In-Reply-To: <1354248720-11899-1-git-send-email-david@tethera.net>\r
+References: <87pq31i9g1.fsf@qmul.ac.uk>\r
+ <1354248720-11899-1-git-send-email-david@tethera.net>\r
+User-Agent: Notmuch/0.14+124~g3b17402 (http://notmuchmail.org) Emacs/23.4.1\r
+ (i686-pc-linux-gnu)\r
+Date: Sun, 02 Dec 2012 02:06:17 +0200\r
+Message-ID: <87pq2tqpvq.fsf@nikula.org>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=us-ascii\r
+X-Gm-Message-State:\r
+ ALoCoQkg7Epbssl+OX9LJVB7uPKsxdXLQ8gwixNBCIKs//2sHTe9AGLZ8Mit6zz/VbKnEbW5hvIz\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: Sun, 02 Dec 2012 00:06:27 -0000\r
+\r
+On Fri, 30 Nov 2012, david@tethera.net wrote:\r
+> From: Jani Nikula <jani@nikula.org>\r
+>\r
+> Basic test of functionality, along with all combinations of options.\r
+>\r
+> Modified extensively by David Bremner <david@tethera.net>\r
+>\r
+> The choice of @ as a tag is intended to be non-alphanumeric, but still\r
+> not too much trouble in the shell and in the old sup dump/restore format.\r
+> ---\r
+>\r
+> Mark: good catch. \r
+>\r
+> I decided to save restore the tags rather than have\r
+> multiple input and output files here.\r
+\r
+But you have to be careful to not add any fancy tags as we're still\r
+using the sup dump format here.\r
+\r
+>\r
+> test/tagging | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++\r
+> 1 file changed, 50 insertions(+)\r
+>\r
+> diff --git a/test/tagging b/test/tagging\r
+> index 980ff92..75552e8 100755\r
+> --- a/test/tagging\r
+> +++ b/test/tagging\r
+> @@ -46,6 +46,56 @@ test_expect_equal "$output" "\\r
+> thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (:\" inbox tag1 unread)\r
+> thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag1 tag4 unread)"\r
+> \r
+> +test_begin_subtest "--batch"\r
+> +notmuch tag --batch <<EOF\r
+> +# %20 is a space in tag\r
+> +-:"%20 -tag1 +tag5 +tag6 -- One\r
+> ++tag1 -tag1 -tag4 +tag4 -- Two\r
+> +-tag6 One\r
+> ++tag5 Two\r
+> +EOF\r
+> +output=$(notmuch search \* | notmuch_search_sanitize)\r
+> +test_expect_equal "$output" "\\r
+> +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (inbox tag5 unread)\r
+> +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag4 tag5 unread)"\r
+> +\r
+\r
+Perhaps add a comment here that the generated files are used for more\r
+than one subtest.\r
+\r
+> +cat > batch.in <<EOF\r
+> +# %20 is a space in tag\r
+\r
+True, but what's it got to do with this bit? :p\r
+\r
+BR,\r
+Jani.\r
+\r
+> ++%40 -tag5 +tag6 -- One\r
+> ++tag1 -tag1 -tag4 +tag4 -- Two\r
+> +-tag5 +tag6 Two\r
+> +EOF\r
+> +\r
+> +cat > batch.expected <<EOF\r
+> +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; One (@ inbox tag6 unread)\r
+> +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Two (inbox tag4 tag6 unread)\r
+> +EOF\r
+> +\r
+> +test_begin_subtest "--input"\r
+> +notmuch dump > backup.tags.$test_count\r
+> +notmuch tag --input=batch.in\r
+> +notmuch search \* | notmuch_search_sanitize > OUTPUT.$test_count\r
+> +notmuch restore < backup.tags.$test_count\r
+> +test_expect_equal_file batch.expected OUTPUT.$test_count\r
+> +\r
+> +test_begin_subtest "--batch --input"\r
+> +notmuch dump > backup.tags.$test_count\r
+> +notmuch tag --batch --input=batch.in\r
+> +notmuch search \* | notmuch_search_sanitize > OUTPUT.$test_count\r
+> +notmuch restore < backup.tags.$test_count\r
+> +test_expect_equal_file batch.expected OUTPUT.$test_count\r
+> +\r
+> +test_begin_subtest "--batch, blank lines and comments"\r
+> +notmuch dump | sort > EXPECTED.$test_count\r
+> +notmuch tag --batch <<EOF\r
+> +# this line is a comment; the next has only white space\r
+> + \r
+> +\r
+> +# the previous line is empty\r
+> +EOF\r
+> +notmuch dump | sort > OUTPUT.$test_count\r
+> +test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count\r
+> +\r
+> test_expect_code 1 "Empty tag names" 'notmuch tag + One'\r
+> \r
+> test_expect_code 1 "Tag name beginning with -" 'notmuch tag +- One'\r
+> -- \r
+> 1.7.10.4\r