Re: [PATCH] test: sort the output of the "prefix" test in T610-message-property as needed

Subject: Re: [PATCH] test: sort the output of the "prefix" test in T610-message-property as needed

Date: Sat, 18 Apr 2020 13:17:19 +0300

To: Olivier Taïbi, notmuch@notmuchmail.org

Cc:

From: Tomi Ollila


On Fri, Apr 17 2020, Olivier Taïbi wrote:

> the "prefix" test in T610-message-property extracts values from a
> (key,value) map where multiple entries can have the same key, and the
> entries are sorted by key, but not by value.  The test incorrectly
> assumes that the values will be sorted as well, so correct this by
> splitting the output using head and tail and sorting each chunk using
> sort.
> NB: the relevant key/values are as follows.
> testkey1: alice, testvalue1, testvalue2, bob
> testkey3: alice3, bob3, testvalue3
> ---
>  test/T610-message-property.sh | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/test/T610-message-property.sh b/test/T610-message-property.sh
> index 53a0be3b..e1be2fc3 100755
> --- a/test/T610-message-property.sh
> +++ b/test/T610-message-property.sh
> @@ -186,6 +186,11 @@ EXPECT0(notmuch_message_add_property (message, "testkey3", "testvalue3"));
>  EXPECT0(notmuch_message_add_property (message, "testkey3", "alice3"));
>  print_properties (message, "testkey", FALSE);
>  EOF

Whichever way done, this should be commented here, not (just) in git
history, that information is not readily available (one has to know
git blame and then go to see to the commit message :)

> +mv OUTPUT unsorted_OUTPUT
> +head -n 5 unsorted_OUTPUT | sort >OUTPUT

Relying that '== stdout ==' sorts first is kinda ugly, as it does not
be part of the sorting range, 

> +tail -n +6 unsorted_OUTPUT | head -n 3 | sort >>OUTPUT

if there were more content in file i would have suggested `sed -n 6,9p`

> +tail -n +9 unsorted_OUTPUT >>OUTPUT
> +rm unsorted_OUTPUT

due to the '== stdout ==' I'd suggest:

awk ' NR == 1 { print; next }
      NR < 6  { print | "sort"; next }
      NR == 6 { close("sort") }
      NR < 9  { print | "sort"; next }
      NR == 9 { close("sort") }
      { print }' unsorted_OUTPUT > OUTPUT

(works w/ gawk and mawk), with some explanation why.

(perhaps how the sorting is done does not need to be explained in commit
message =D

>  cat <<'EOF' >EXPECTED
>  == stdout ==
>  alice
> -- 
> 2.26.0
_______________________________________________
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch

Thread: