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

Mark Walters markwalters1009 at gmail.com
Sun Dec 16 13:13:08 PST 2012


On Sun, 16 Dec 2012, Jani Nikula <jani at nikula.org> 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 <<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


More information about the notmuch mailing list