Subject: Re: [PATCH 0/2] t/lib-gpg: ensure GNUPGHOME is created as needed

From: Junio C Hamano <[email-masked]>
Date: Sat, 25 Oct 2025 18:25:01 -0700

Todd Zullinger <[email-masked]> writes:

> I've intended to dig into it further over the past few
> months but have not managed to spend enough time to work out
> the root of the problem.
>
> I hope that someone more familiar with these tests (or
> perhaps someone with fresh eyes) will spot the problem.
>> 
>> A number of these fail, e.g.:
>> 
>> https://github.com/tmzullinger/git/actions/runs/9780387020/job/27001952643#step:4:1871
>> 
>>     Error: failed: t1016.173 Verify commit signedcommit4's sha1 oid
>>     failure: t1016.173 Verify commit signedcommit4's sha1 oid 
>> 	    git --git-dir=repo-sha256/.git rev-parse --output-object-format=sha1 ${sha256_oid} > ${name}_sha1 &&
>> 	    test_cmp ${name}_sha1 ${name}_sha1_expected
>>       
>>       + git --git-dir=repo-sha256/.git rev-parse --output-object-format=sha1 5d70155cc40e4c16515c89ad0b11d8c691436fc4a4d3ca246669a4c21f07e454
>>       + test_cmp signedcommit4_sha1 signedcommit4_sha1_expected
>>       + test 2 -ne 2
>>       + eval diff -u "$@"
>>       + diff -u signedcommit4_sha1 signedcommit4_sha1_expected
>>       --- signedcommit4_sha1	2024-07-03 15:11:05.597537579 +0000
>>       +++ signedcommit4_sha1_expected	2024-07-03 15:11:05.553537766 +0000
>>       @@ -1 +1 @@
>>       -9179ccc5b15588bc3a45c5cc75bdec380f8ccb86
>>       +c6c46f92bc2cfda57ad6bf7981fa654825376b24
>>       error: last command exited with $?=1
>>       not ok 173 - Verify commit signedcommit4's sha1 oid
>>       #	
>>       #		git --git-dir=repo-sha256/.git rev-parse --output-object-format=sha1 ${sha256_oid} > ${name}_sha1 &&
>>       #		test_cmp ${name}_sha1 ${name}_sha1_expected
>>       #	
>> 
>> This seems like it's just exposing a pre-existing failure,
>> as I can't imagine how creating GNUPGHOME would cause the
>> actual and expected SHA's to differ. :)
>> 
>> Perhaps the intended gpg wrapper script which sets
>> `--faked-system-time` isn't being used?
>> 
>> I'm not sure why that would differ in the Github actions
>> from my local builds, but I don't know what else differs in
>> the Ubuntu images and/or environment used by the actions.
>
> I have run a good number of builds with the patches applied
> and t1016-compatObjectFormat regularly fails for all of the
> tests which use the GPG2 prereq.  A recent Github CI run is
> here:
>
>     https://github.com/tmzullinger/git/actions/runs/13570544425
>
> I think this test flakiness should be fixed so that we can
> apply the patch to fix the GPG2 prereq.  As it is, we're
> skipping _all_ of the tests which require GPG2.

Any progress or responses?  All of these tests, that nobody seemed
to have caught breakage of because they weren't being run anyway,
seem to be flakey with the new GNUPGHOME set-up.

I am tempted to do this in the meantime, but I'd really prefer not
to have to do so, assuming that these tests, when fixed, would be
materially contributing to the health of our codebase.

Thanks.

 t/t1016-compatObjectFormat.sh | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/t/t1016-compatObjectFormat.sh b/t/t1016-compatObjectFormat.sh
index be3206a16f..0968962f1d 100755
--- a/t/t1016-compatObjectFormat.sh
+++ b/t/t1016-compatObjectFormat.sh
@@ -261,21 +261,21 @@ compare_oids () {
 compare_oids 'blob' hello "$hello_sha1_oid" "$hello_sha256_oid"
 compare_oids 'tree' tree "$tree_sha1_oid" "$tree_sha256_oid"
 compare_oids 'commit' commit "$commit_sha1_oid" "$commit_sha256_oid"
-compare_oids GPG2 'commit' signedcommit "$signedcommit_sha1_oid" "$signedcommit_sha256_oid"
+compare_oids GPG2,FLAKEY 'commit' signedcommit "$signedcommit_sha1_oid" "$signedcommit_sha256_oid"
 compare_oids 'tag' hellotag "$hellotag_sha1_oid" "$hellotag_sha256_oid"
 compare_oids 'tag' treetag "$treetag_sha1_oid" "$treetag_sha256_oid"
 compare_oids 'tag' committag "$committag_sha1_oid" "$committag_sha256_oid"
-compare_oids GPG2 'tag' signedtag "$signedtag_sha1_oid" "$signedtag_sha256_oid"
+compare_oids GPG2,FLAKEY 'tag' signedtag "$signedtag_sha1_oid" "$signedtag_sha256_oid"
 
 compare_oids 'blob' more "$more_sha1_oid" "$more_sha256_oid"
 compare_oids 'blob' another "$another_sha1_oid" "$another_sha256_oid"
 compare_oids 'tree' tree2 "$tree2_sha1_oid" "$tree2_sha256_oid"
 compare_oids 'commit' commit2 "$commit2_sha1_oid" "$commit2_sha256_oid"
-compare_oids GPG2 'tag' signedtag2 "$signedtag2_sha1_oid" "$signedtag2_sha256_oid"
-compare_oids GPG2 'commit' signedcommit2 "$signedcommit2_sha1_oid" "$signedcommit2_sha256_oid"
-compare_oids GPG2 'commit' signedcommit3 "$signedcommit3_sha1_oid" "$signedcommit3_sha256_oid"
-compare_oids GPG2 'commit' signedcommit4 "$signedcommit4_sha1_oid" "$signedcommit4_sha256_oid"
-compare_oids GPG2 'tag' signedtag3 "$signedtag3_sha1_oid" "$signedtag3_sha256_oid"
-compare_oids GPG2 'tag' signedtag4 "$signedtag4_sha1_oid" "$signedtag4_sha256_oid"
+compare_oids GPG2,FLAKEY 'tag' signedtag2 "$signedtag2_sha1_oid" "$signedtag2_sha256_oid"
+compare_oids GPG2,FLAKEY 'commit' signedcommit2 "$signedcommit2_sha1_oid" "$signedcommit2_sha256_oid"
+compare_oids GPG2,FLAKEY 'commit' signedcommit3 "$signedcommit3_sha1_oid" "$signedcommit3_sha256_oid"
+compare_oids GPG2,FLAKEY 'commit' signedcommit4 "$signedcommit4_sha1_oid" "$signedcommit4_sha256_oid"
+compare_oids GPG2,FLAKEY 'tag' signedtag3 "$signedtag3_sha1_oid" "$signedtag3_sha256_oid"
+compare_oids GPG2,FLAKEY 'tag' signedtag4 "$signedtag4_sha1_oid" "$signedtag4_sha256_oid"
 
 test_done
-- 
2.51.1-691-gd530f589c3