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.