Volume XXII, number 279Tuesday, October 6, 2026Latest message 43 minutes ago

The Git List

News and archive of git@vger.kernel.org, since April 2005

patcht7528: fix failure under csh

4 messages between Aug 3, 2026 and Aug 3, 2026, from Kenneth Lorber, brian m. carlson, Junio C Hamano.

Plain Markdown or JSON for tools and agents. Diffs are folded; open one to read it.

Kenneth LorberAug 3, 2026, 00:41 UTC on lore

The test suite fails at t7528 when run in an account with tcsh as the login shell due to $SHELL being "/bin/tcsh"; similar behaviour is expected under other csh-like shells.

From ssh-agent(1):
-s      Generate Bourne shell commands on stdout.  This is the  default
               if SHELL does not look like it's a csh style of shell.

This patch explicitly tells ssh-agent to use Bourne shell syntax, thus removing a spurious test failure for users with csh style shells.

An alternative change would be to have test-lib.sh clear $SHELL; this was rejected as potentially hiding additional similar errors. There are no such additional errors evident currently.

No additional tests are added as the error is in the setup for testing, not an error in git itself.

Kenneth Lorber (1):
  t7528: fix failure under csh
 t/t7528-signed-commit-ssh.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-- 
2.43.0
Kenneth LorberAug 3, 2026, 00:41 UTC in reply to Kenneth Lorber on lore

[PATCH 1/1] t7528: fix failure under csh

Explicitly set sh mode for ssh-agent (ssh-agent -s) to prevent failure when user's login shell is csh-like. The failure is caused by propagation of the $SHELL value from the user's original shell despite the test and test harness explictly using sh, which makes ssh-agent emit initialization code for the wrong shell:

> cd t
> echo $SHELL
/bin/tcsh
> ./t7528-signed-commit-ssh.sh --verbose --debug

[...] expecting success of 7528.2 'sign commits using literal public keys with ssh-agent': [...] ./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found ./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found [...]

Signed-off-by: Kenneth Lorber <keni@his.com>
---
 t/t7528-signed-commit-ssh.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to t/t7528-signed-commit-ssh.sh +1 −1
diff --git a/t/t7528-signed-commit-ssh.sh b/t/t7528-signed-commit-ssh.sh
index b50306b9b3..7bf4a40de2 100755
--- a/t/t7528-signed-commit-ssh.sh
+++ b/t/t7528-signed-commit-ssh.sh
@@ -82,7 +82,7 @@ test_expect_success GPGSSH 'create signed commits' '
 test_expect_success GPGSSH 'sign commits using literal public keys with ssh-agent' '
 	test_when_finished "test_unconfig commit.gpgsign" &&
 	test_config gpg.format ssh &&
-	eval $(ssh-agent -T || ssh-agent) &&
+	eval $(ssh-agent -T -s || ssh-agent -s) &&
 	test_when_finished "kill ${SSH_AGENT_PID}" &&
 	test_when_finished "test_unconfig user.signingkey" &&
 	mkdir tmpdir &&
-- 
2.43.0
brian m. carlsonAug 3, 2026, 02:13 UTC in reply to Kenneth Lorber on lore

Re: [PATCH 1/1] t7528: fix failure under csh

On 2026-08-03 at 00:41:03, Kenneth Lorber wrote:
Show 35 quoted lines
> Explicitly set sh mode for ssh-agent (ssh-agent -s) to prevent
> failure when user's login shell is csh-like.  The failure is
> caused by propagation of the $SHELL value from the user's original
> shell despite the test and test harness explictly using sh, which
> makes ssh-agent emit initialization code for the wrong shell:
> 
> > cd t
> > echo $SHELL
> /bin/tcsh
> > ./t7528-signed-commit-ssh.sh --verbose --debug
> [...]
> expecting success of 7528.2 'sign commits using literal public keys with ssh-agent':
> [...]
> ./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found
> ./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found
> [...]
> 
> Signed-off-by: Kenneth Lorber <keni@his.com>
> ---
>  t/t7528-signed-commit-ssh.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/t/t7528-signed-commit-ssh.sh b/t/t7528-signed-commit-ssh.sh
> index b50306b9b3..7bf4a40de2 100755
> --- a/t/t7528-signed-commit-ssh.sh
> +++ b/t/t7528-signed-commit-ssh.sh
> @@ -82,7 +82,7 @@ test_expect_success GPGSSH 'create signed commits' '
>  test_expect_success GPGSSH 'sign commits using literal public keys with ssh-agent' '
>  	test_when_finished "test_unconfig commit.gpgsign" &&
>  	test_config gpg.format ssh &&
> -	eval $(ssh-agent -T || ssh-agent) &&
> +	eval $(ssh-agent -T -s || ssh-agent -s) &&
>  	test_when_finished "kill ${SSH_AGENT_PID}" &&
>  	test_when_finished "test_unconfig user.signingkey" &&
>  	mkdir tmpdir &&

This seems reasonable. SHELL is defined by POSIX as "a pathname of the user's preferred command language interpreter." When we're running the testsuite, we don't care what that is and always want a POSIX sh-compatible output, so using `-s` is the right thing.

I also don't see any other instances of `ssh-agent` in the codebase, so this looks like the only place we need to fix.

-- 
brian m. carlson (they/them)
Toronto, Ontario, CA
Junio C HamanoAug 3, 2026, 14:42 UTC in reply to brian m. carlson on lore

Re: [PATCH 1/1] t7528: fix failure under csh

"brian m. carlson" <sandals@crustytoothpaste.net> writes:
Show 17 quoted lines
>> @@ -82,7 +82,7 @@ test_expect_success GPGSSH 'create signed commits' '
>>  test_expect_success GPGSSH 'sign commits using literal public keys with ssh-agent' '
>>  	test_when_finished "test_unconfig commit.gpgsign" &&
>>  	test_config gpg.format ssh &&
>> -	eval $(ssh-agent -T || ssh-agent) &&
>> +	eval $(ssh-agent -T -s || ssh-agent -s) &&
>>  	test_when_finished "kill ${SSH_AGENT_PID}" &&
>>  	test_when_finished "test_unconfig user.signingkey" &&
>>  	mkdir tmpdir &&
>
> This seems reasonable.  SHELL is defined by POSIX as "a pathname of the
> user's preferred command language interpreter."  When we're running the
> testsuite, we don't care what that is and always want a POSIX
> sh-compatible output, so using `-s` is the right thing.
>
> I also don't see any other instances of `ssh-agent` in the codebase, so
> this looks like the only place we need to fix.
Thanks for being careful.  Will queue.

Back to recent threads