[PATCH v3 0/5] add --format=text0 to notmuch search

2012-12-16 Thread Mark Walters
On Sun, 16 Dec 2012, Jani Nikula  wrote:
> Hi all, v3 of id:cover.1355064714.git.jani at nikula.org
>
> Changes since v2:
>  * add new patch 1/5 to clarify sprinter documentation
>  * fix the test patch 4/5 according to id:8738z6wguj.fsf at qmul.ac.uk and
>id:87y5gyvvv7.fsf at awakening.csail.mit.edu
>
> Diff to v2 at the end of the cover letter.

LGTM +1

Best wishes

Mark



>
>
> BR,
> Jani.
>
>
> Jani Nikula (5):
>   sprinter: clarify separator documentation
>   sprinter: add text0 formatter for null character separated text
>   cli: add --format=text0 to notmuch search
>   test: notmuch search --format=text0
>   man: document notmuch search --format=text0
>
>  man/man1/notmuch-search.1 |   26 --
>  notmuch-search.c  |   16 ++--
>  sprinter-text.c   |   22 ++
>  sprinter.h|   15 +++
>  test/text |   33 +
>  5 files changed, 96 insertions(+), 16 deletions(-)
>
> -- 
> 1.7.10.4
>
>
>
> diff --git a/sprinter.h b/sprinter.h
> index f36b999..f859672 100644
> --- a/sprinter.h
> +++ b/sprinter.h
> @@ -42,10 +42,11 @@ typedef struct sprinter {
>   */
>  void (*map_key) (struct sprinter *, const char *);
>  
> -/* Insert a separator (usually extra whitespace) for improved
> - * readability without affecting the abstract syntax of the
> - * structure being printed.
> - * For JSON, this could simply be a line break.
> +/* Insert a separator (usually extra whitespace). For the text
> + * printers, this is a syntactic separator. For the structured
> + * printers, this is for improved readability without affecting
> + * the abstract syntax of the structure being printed. For JSON,
> + * this could simply be a line break.
>   */
>  void (*separator) (struct sprinter *);
>  
> diff --git a/test/text b/test/text
> index e003a66..b5ccefc 100755
> --- a/test/text
> +++ b/test/text
> @@ -55,30 +55,34 @@ test_expect_equal "$output" \
>  add_email_corpus
>  
>  test_begin_subtest "Search message tags: text0"
> -cat < EXPECTED.$test_count
> +cat < EXPECTED
>  attachment inbox signed unread
>  EOF
> -notmuch search --format=text0 --output=tags '*' | xargs -0 | 
> notmuch_search_sanitize > OUTPUT.$test_count
> -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
> +notmuch search --format=text0 --output=tags '*' | xargs -0 | 
> notmuch_search_sanitize > OUTPUT
> +test_expect_equal_file EXPECTED OUTPUT
>  
> +# Use tr(1) to convert --output=text0 to --output=text for
> +# comparison. Also translate newlines to spaces to fail with more
> +# noise if they are present as delimiters instead of null
> +# characters. This assumes there are no newlines in the data.
>  test_begin_subtest "Compare text vs. text0 for threads"
> -notmuch search --format=text --output=threads '*' | notmuch_search_sanitize 
> > EXPECTED.$test_count
> -notmuch search --format=text0 --output=threads '*' | xargs -0 -L1 | 
> notmuch_search_sanitize > OUTPUT.$test_count
> -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
> +notmuch search --format=text --output=threads '*' | notmuch_search_sanitize 
> > EXPECTED
> +notmuch search --format=text0 --output=threads '*' | tr "\n\0" " \n" | 
> notmuch_search_sanitize > OUTPUT
> +test_expect_equal_file EXPECTED OUTPUT
>  
>  test_begin_subtest "Compare text vs. text0 for messages"
> -notmuch search --format=text --output=messages '*' | notmuch_search_sanitize 
> > EXPECTED.$test_count
> -notmuch search --format=text0 --output=messages '*' | xargs -0 -L1 | 
> notmuch_search_sanitize > OUTPUT.$test_count
> -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
> +notmuch search --format=text --output=messages '*' | notmuch_search_sanitize 
> > EXPECTED
> +notmuch search --format=text0 --output=messages '*' | tr "\n\0" " \n" | 
> notmuch_search_sanitize > OUTPUT
> +test_expect_equal_file EXPECTED OUTPUT
>  
>  test_begin_subtest "Compare text vs. text0 for files"
> -notmuch search --format=text --output=files '*' | notmuch_search_sanitize > 
> EXPECTED.$test_count
> -notmuch search --format=text0 --output=files '*' | xargs -0 -L1 | 
> notmuch_search_sanitize > OUTPUT.$test_count
> -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
> +notmuch search --format=text --output=files '*' | notmuch_search_sanitize > 
> EXPECTED
> +notmuch search --format=text0 --output=files '*' | tr "\n\0" " \n" | 
> notmuch_search_sanitize > OUTPUT
> +test_expect_equal_file EXPECTED OUTPUT
>  
>  test_begin_subtest "Compare text vs. text0 for tags"
> -notmuch search --format=text --output=tags '*' | notmuch_search_sanitize > 
> EXPECTED.$test_count
> -notmuch search --format=text0 --output=tags '*' | xargs -0 -L1 | 
> notmuch_search_sanitize > OUTPUT.$test_count
> -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
> +notmuch search --format=text --output=tags '*' | 

[PATCH v3 0/5] add --format=text0 to notmuch search

2012-12-16 Thread Austin Clements
On Sun, 16 Dec 2012, Jani Nikula  wrote:
> Hi all, v3 of id:cover.1355064714.git.jani at nikula.org
>
> Changes since v2:
>  * add new patch 1/5 to clarify sprinter documentation
>  * fix the test patch 4/5 according to id:8738z6wguj.fsf at qmul.ac.uk and
>id:87y5gyvvv7.fsf at awakening.csail.mit.edu
>
> Diff to v2 at the end of the cover letter.
>
>
> BR,
> Jani.

LGTM.


[PATCH v3 0/5] add --format=text0 to notmuch search

2012-12-16 Thread Jani Nikula
Hi all, v3 of id:cover.1355064714.git.j...@nikula.org

Changes since v2:
 * add new patch 1/5 to clarify sprinter documentation
 * fix the test patch 4/5 according to id:8738z6wguj@qmul.ac.uk and
   id:87y5gyvvv7@awakening.csail.mit.edu

Diff to v2 at the end of the cover letter.


BR,
Jani.


Jani Nikula (5):
  sprinter: clarify separator documentation
  sprinter: add text0 formatter for null character separated text
  cli: add --format=text0 to notmuch search
  test: notmuch search --format=text0
  man: document notmuch search --format=text0

 man/man1/notmuch-search.1 |   26 --
 notmuch-search.c  |   16 ++--
 sprinter-text.c   |   22 ++
 sprinter.h|   15 +++
 test/text |   33 +
 5 files changed, 96 insertions(+), 16 deletions(-)

-- 
1.7.10.4



diff --git a/sprinter.h b/sprinter.h
index f36b999..f859672 100644
--- a/sprinter.h
+++ b/sprinter.h
@@ -42,10 +42,11 @@ typedef struct sprinter {
  */
 void (*map_key) (struct sprinter *, const char *);
 
-/* Insert a separator (usually extra whitespace) for improved
- * readability without affecting the abstract syntax of the
- * structure being printed.
- * For JSON, this could simply be a line break.
+/* Insert a separator (usually extra whitespace). For the text
+ * printers, this is a syntactic separator. For the structured
+ * printers, this is for improved readability without affecting
+ * the abstract syntax of the structure being printed. For JSON,
+ * this could simply be a line break.
  */
 void (*separator) (struct sprinter *);
 
diff --git a/test/text b/test/text
index e003a66..b5ccefc 100755
--- a/test/text
+++ b/test/text
@@ -55,30 +55,34 @@ test_expect_equal $output \
 add_email_corpus
 
 test_begin_subtest Search message tags: text0
-cat EOF  EXPECTED.$test_count
+cat EOF  EXPECTED
 attachment inbox signed unread
 EOF
-notmuch search --format=text0 --output=tags '*' | xargs -0 | 
notmuch_search_sanitize  OUTPUT.$test_count
-test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
+notmuch search --format=text0 --output=tags '*' | xargs -0 | 
notmuch_search_sanitize  OUTPUT
+test_expect_equal_file EXPECTED OUTPUT
 
+# Use tr(1) to convert --output=text0 to --output=text for
+# comparison. Also translate newlines to spaces to fail with more
+# noise if they are present as delimiters instead of null
+# characters. This assumes there are no newlines in the data.
 test_begin_subtest Compare text vs. text0 for threads
-notmuch search --format=text --output=threads '*' | notmuch_search_sanitize  
EXPECTED.$test_count
-notmuch search --format=text0 --output=threads '*' | xargs -0 -L1 | 
notmuch_search_sanitize  OUTPUT.$test_count
-test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
+notmuch search --format=text --output=threads '*' | notmuch_search_sanitize  
EXPECTED
+notmuch search --format=text0 --output=threads '*' | tr \n\0  \n | 
notmuch_search_sanitize  OUTPUT
+test_expect_equal_file EXPECTED OUTPUT
 
 test_begin_subtest Compare text vs. text0 for messages
-notmuch search --format=text --output=messages '*' | notmuch_search_sanitize  
EXPECTED.$test_count
-notmuch search --format=text0 --output=messages '*' | xargs -0 -L1 | 
notmuch_search_sanitize  OUTPUT.$test_count
-test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
+notmuch search --format=text --output=messages '*' | notmuch_search_sanitize  
EXPECTED
+notmuch search --format=text0 --output=messages '*' | tr \n\0  \n | 
notmuch_search_sanitize  OUTPUT
+test_expect_equal_file EXPECTED OUTPUT
 
 test_begin_subtest Compare text vs. text0 for files
-notmuch search --format=text --output=files '*' | notmuch_search_sanitize  
EXPECTED.$test_count
-notmuch search --format=text0 --output=files '*' | xargs -0 -L1 | 
notmuch_search_sanitize  OUTPUT.$test_count
-test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
+notmuch search --format=text --output=files '*' | notmuch_search_sanitize  
EXPECTED
+notmuch search --format=text0 --output=files '*' | tr \n\0  \n | 
notmuch_search_sanitize  OUTPUT
+test_expect_equal_file EXPECTED OUTPUT
 
 test_begin_subtest Compare text vs. text0 for tags
-notmuch search --format=text --output=tags '*' | notmuch_search_sanitize  
EXPECTED.$test_count
-notmuch search --format=text0 --output=tags '*' | xargs -0 -L1 | 
notmuch_search_sanitize  OUTPUT.$test_count
-test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
+notmuch search --format=text --output=tags '*' | notmuch_search_sanitize  
EXPECTED
+notmuch search --format=text0 --output=tags '*' | tr \n\0  \n | 
notmuch_search_sanitize  OUTPUT
+test_expect_equal_file EXPECTED OUTPUT
 
 test_done
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH v3 0/5] add --format=text0 to notmuch search

2012-12-16 Thread Austin Clements
On Sun, 16 Dec 2012, Jani Nikula j...@nikula.org wrote:
 Hi all, v3 of id:cover.1355064714.git.j...@nikula.org

 Changes since v2:
  * add new patch 1/5 to clarify sprinter documentation
  * fix the test patch 4/5 according to id:8738z6wguj@qmul.ac.uk and
id:87y5gyvvv7@awakening.csail.mit.edu

 Diff to v2 at the end of the cover letter.


 BR,
 Jani.

LGTM.
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH v3 0/5] add --format=text0 to notmuch search

2012-12-16 Thread Mark Walters
On Sun, 16 Dec 2012, Jani Nikula j...@nikula.org wrote:
 Hi all, v3 of id:cover.1355064714.git.j...@nikula.org

 Changes since v2:
  * add new patch 1/5 to clarify sprinter documentation
  * fix the test patch 4/5 according to id:8738z6wguj@qmul.ac.uk and
id:87y5gyvvv7@awakening.csail.mit.edu

 Diff to v2 at the end of the cover letter.

LGTM +1

Best wishes

Mark





 BR,
 Jani.


 Jani Nikula (5):
   sprinter: clarify separator documentation
   sprinter: add text0 formatter for null character separated text
   cli: add --format=text0 to notmuch search
   test: notmuch search --format=text0
   man: document notmuch search --format=text0

  man/man1/notmuch-search.1 |   26 --
  notmuch-search.c  |   16 ++--
  sprinter-text.c   |   22 ++
  sprinter.h|   15 +++
  test/text |   33 +
  5 files changed, 96 insertions(+), 16 deletions(-)

 -- 
 1.7.10.4



 diff --git a/sprinter.h b/sprinter.h
 index f36b999..f859672 100644
 --- a/sprinter.h
 +++ b/sprinter.h
 @@ -42,10 +42,11 @@ typedef struct sprinter {
   */
  void (*map_key) (struct sprinter *, const char *);
  
 -/* Insert a separator (usually extra whitespace) for improved
 - * readability without affecting the abstract syntax of the
 - * structure being printed.
 - * For JSON, this could simply be a line break.
 +/* Insert a separator (usually extra whitespace). For the text
 + * printers, this is a syntactic separator. For the structured
 + * printers, this is for improved readability without affecting
 + * the abstract syntax of the structure being printed. For JSON,
 + * this could simply be a line break.
   */
  void (*separator) (struct sprinter *);
  
 diff --git a/test/text b/test/text
 index e003a66..b5ccefc 100755
 --- a/test/text
 +++ b/test/text
 @@ -55,30 +55,34 @@ test_expect_equal $output \
  add_email_corpus
  
  test_begin_subtest Search message tags: text0
 -cat EOF  EXPECTED.$test_count
 +cat EOF  EXPECTED
  attachment inbox signed unread
  EOF
 -notmuch search --format=text0 --output=tags '*' | xargs -0 | 
 notmuch_search_sanitize  OUTPUT.$test_count
 -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
 +notmuch search --format=text0 --output=tags '*' | xargs -0 | 
 notmuch_search_sanitize  OUTPUT
 +test_expect_equal_file EXPECTED OUTPUT
  
 +# Use tr(1) to convert --output=text0 to --output=text for
 +# comparison. Also translate newlines to spaces to fail with more
 +# noise if they are present as delimiters instead of null
 +# characters. This assumes there are no newlines in the data.
  test_begin_subtest Compare text vs. text0 for threads
 -notmuch search --format=text --output=threads '*' | notmuch_search_sanitize 
  EXPECTED.$test_count
 -notmuch search --format=text0 --output=threads '*' | xargs -0 -L1 | 
 notmuch_search_sanitize  OUTPUT.$test_count
 -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
 +notmuch search --format=text --output=threads '*' | notmuch_search_sanitize 
  EXPECTED
 +notmuch search --format=text0 --output=threads '*' | tr \n\0  \n | 
 notmuch_search_sanitize  OUTPUT
 +test_expect_equal_file EXPECTED OUTPUT
  
  test_begin_subtest Compare text vs. text0 for messages
 -notmuch search --format=text --output=messages '*' | notmuch_search_sanitize 
  EXPECTED.$test_count
 -notmuch search --format=text0 --output=messages '*' | xargs -0 -L1 | 
 notmuch_search_sanitize  OUTPUT.$test_count
 -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
 +notmuch search --format=text --output=messages '*' | notmuch_search_sanitize 
  EXPECTED
 +notmuch search --format=text0 --output=messages '*' | tr \n\0  \n | 
 notmuch_search_sanitize  OUTPUT
 +test_expect_equal_file EXPECTED OUTPUT
  
  test_begin_subtest Compare text vs. text0 for files
 -notmuch search --format=text --output=files '*' | notmuch_search_sanitize  
 EXPECTED.$test_count
 -notmuch search --format=text0 --output=files '*' | xargs -0 -L1 | 
 notmuch_search_sanitize  OUTPUT.$test_count
 -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
 +notmuch search --format=text --output=files '*' | notmuch_search_sanitize  
 EXPECTED
 +notmuch search --format=text0 --output=files '*' | tr \n\0  \n | 
 notmuch_search_sanitize  OUTPUT
 +test_expect_equal_file EXPECTED OUTPUT
  
  test_begin_subtest Compare text vs. text0 for tags
 -notmuch search --format=text --output=tags '*' | notmuch_search_sanitize  
 EXPECTED.$test_count
 -notmuch search --format=text0 --output=tags '*' | xargs -0 -L1 | 
 notmuch_search_sanitize  OUTPUT.$test_count
 -test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
 +notmuch search --format=text --output=tags '*' | notmuch_search_sanitize  
 EXPECTED
 +notmuch search --format=text0 --output=tags '*' | tr \n\0  \n | 
 notmuch_search_sanitize  OUTPUT
 +test_expect_equal_file