From: Junio C Hamano Date: Fri, 24 May 2024 19:58:34 GMT Subject: Re: [PATCH v4 3/3] run-command: show prepared command Message-ID: In-Reply-To: Junio C Hamano writes: >> + test_grep "^trace: prepare_cmd:.*" output >> +' > > If you run > > $ cd t && sh ./t0014-alias.sh -d && cat trash*.t0014-alias/output > > you'll see two "prepare_cmd" logged, because you added one to > prepare_shell_cmd() and another to prepare_cmd(). To avoid similar issues, perhaps the test can try to see a bit more into the output? We already know that we cannot expect the output to be identical everywhere, but we can do something along the lines of the attached patch, or is the expected pattern below a bit too specific? t/t0014-alias.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git c/t/t0014-alias.sh w/t/t0014-alias.sh index b7affbe93a..a3c133be96 100755 --- c/t/t0014-alias.sh +++ w/t/t0014-alias.sh @@ -45,9 +45,17 @@ test_expect_success 'run-command formats empty args properly' ' ' test_expect_success 'tracing a shell alias with arguments shows trace of prepared command' ' + cat >expect <<-EOF && + trace: exec: git-echo argument + trace: run_command: git-echo argument + trace: run_command: ${SQ}echo \$*${SQ} argument + trace: prepare_cmd: SHELL -c ${SQ}echo \$* "\$@"${SQ} ${SQ}echo \$*${SQ} argument + EOF git config alias.echo "!echo \$*" && env GIT_TRACE=1 git echo argument 2>output && - test_grep "^trace: prepare_cmd:.*" output + # redact platform differences + sed -e "s/^\(trace: prepare_cmd:\) .* -c /\1 SHELL -c /" output >actual && + test_cmp expect actual ' test_done