Re: [PATCH v7 02/10] test-lib-functions: improve diagnostic output for trace2 data assertions
- From
Elijah Newren <newren@gmail.com>
- Date
- Aug 7, 2026, 03:00 UTC
- Message-ID
- <CABPp-BFKNkXB0gBDVhS1szqkSv0pOYepZ-hJhxQro-ViphDPTg@mail.gmail.com>
- In-Reply-To
- <57ecc0b18a53ac567c24d90288d75aee16eefc01.1786013982.git.gitgitgadget@gmail.com>
On Thu, Aug 6, 2026 at 4:04 AM Kristofer Karlsson via GitGitGadget <gitgitgadget@gmail.com> wrote:
Show 21 quoted lines
> > From: Kristofer Karlsson <krka@spotify.com> > > 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.
Show 33 quoted lines
> Signed-off-by: Kristofer Karlsson <krka@spotify.com>
> ---
> 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.
Show 15 quoted lines
> + 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.