mirror of
https://github.com/git/git.git
synced 2026-08-09 09:34:14 +00:00
test-lib-functions: improve diagnostic output for trace2 data assertions
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
Signed-off-by: Kristofer Karlsson <krka@spotify.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
d159b47a03
commit
2a980753f3
@@ -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"*)
|
||||
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
|
||||
}
|
||||
|
||||
# Given a GIT_TRACE2_EVENT log over stdin, writes to stdout a list of URLs
|
||||
# sent to git-remote-https child processes.
|
||||
test_remote_https_urls() {
|
||||
|
||||
Reference in New Issue
Block a user