Re: [PATCH v7 02/10] test-lib-functions: improve diagnostic output for trace2 data assertions

Elijah Newren <[email protected]>
Newsgroups org.kernel.vger.git
Message-ID <CABPp-BFKNkXB0gBDVhS1szqkSv0pOYepZ-hJhxQro-ViphDPTg@mail.gmail.com>
On Thu, Aug 6, 2026 at 4:04 AM Kristofer Karlsson via GitGitGadget
<[email protected]> wrote:
>
> From: Kristofer Karlsson <[email protected]>
>
> test_trace2_data is a bare grep that silently exits on failure.
> Add a more informative variant that verifies the event appears
> exactly once and reports what went wrong: key not found, multiple
> entries, or value mismatch. Diagnostics go to FD 4 like test_grep.
>
> Before (value mismatch):
>
>   $ test_trace2_data status count/changed 999 <trace2.txt
>   $ echo $?
>   1
>   (no output)
>
> After:
>
>   $ test_trace2_data_singular status count/changed 999 <trace2.txt
>   error: trace2 data 'status/count/changed'
>     expected: 999
>     actual:   0

Nice.

> Signed-off-by: Kristofer Karlsson <[email protected]>
> ---
>  t/test-lib-functions.sh | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> index 809c662124..8c6d327b03 100644
> --- a/t/test-lib-functions.sh
> +++ b/t/test-lib-functions.sh
> @@ -1996,6 +1996,41 @@ test_trace2_data () {
>         grep -e '"category":"'"$1"'","key":"'"$2"'","value":"'"$3"'"'
>  }
>
> +# Check that the given trace2 data event has the expected value and
> +# appears exactly once.  Produces a diagnostic on failure.
> +#
> +#      test_trace2_data_singular <category> <key> <value> [<label>]
> +test_trace2_data_singular () {
> +       local category="$1" key="$2" expect_val="$3"
> +       local label_suffix="${4:+ [$4]}"
> +       local kv_pattern='"category":"'"$category"'","key":"'"$key"'","value":"\([^"]*\)"'
> +       local actual
> +
> +       actual=$(sed -n "s|.*${kv_pattern}.*|\1|p") &&
> +
> +       if test -z "$actual"
> +       then
> +               echo >&4 "error: trace2 data '$category/$key'$label_suffix not found"
> +               return 1
> +       fi &&
> +
> +       case "$actual" in
> +       *"$LF"*)

Ah, you've got Rene's suggestion from v6 included as well; nice.

> +               echo >&4 "error: trace2 data '$category/$key'$label_suffix has multiple entries, expected 1"
> +               printf '%s\n' "$actual" | sed 's/^/  actual:   /' >&4
> +               return 1
> +               ;;
> +       esac &&
> +
> +       if test "$actual" != "$expect_val"
> +       then
> +               echo >&4 "error: trace2 data '$category/$key'$label_suffix"
> +               echo >&4 "  expected: $expect_val"
> +               echo >&4 "  actual:   $actual"
> +               return 1
> +       fi
> +}
> +

Function appears to match the comment above it and the commit message.
It looks like a nice usability addition.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.