Subject: Re: [PATCH v3 3/3] run-command: show prepared command

From: Junio C Hamano <[email-masked]>
Date: Thu, 23 May 2024 23:09:01 -0700

Junio C Hamano <[email-masked]> writes:

> Subject: [PATCH] fixup! run-command: show prepared command
>
> Do not assume everybody sets SHELL_PATH to /bin/sh
> ---
>  t/t0014-alias.sh | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/t/t0014-alias.sh b/t/t0014-alias.sh
> index 75c8763a6c..0d42d2b454 100755
> --- a/t/t0014-alias.sh
> +++ b/t/t0014-alias.sh
> @@ -48,7 +48,8 @@ test_expect_success 'tracing a shell alias with arguments shows full prepared co
>  	git config alias.echo "!echo \$*" &&
>  	env GIT_TRACE=1 git echo argument 2>output &&
>  	cp output /tmp/output &&
> -	test_grep "^trace: prepare_cmd: /bin/sh -c '\''echo \$\* \"\$@\"" output
> +	# ".*" can be "sh", or SHELL_PATH (not always "/bin/sh")
> +	test_grep "^trace: prepare_cmd: .* -c '\''echo \$\* \"\$@\"" output
>  '

So with this applied on top of the topic, 'seen' does pass with
SHELL_PATH set to say /bin/dash, but this still fails CI jobs on
Windows.  

A sample run that failed (you'd probably need to be logged in as a
github user there):

  https://github.com/git/git/actions/runs/9216303673/job/25360383492#step:5:237

With the lack of "trace: prepare_cmd:" in the "output" file, on the
platform, perhaps the code is failing to find an executable for
"echo" on the $PATH and taking the early return codepath that sets
errno to ENOENT and returns -1?  Or it is that even prepare_cmd()
is not called?  I do not do Windows, so I'll stop here.

Oh by the way, I just noticed that there is an apparent leftover
debugging statement that accesses outside the test playpen.  When
you reroll the patch, please make sure that "cp output /tmp/output"
is removed.

Thanks.