Re: [PATCH] t/gpg: simplify test for unknown key
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 7, 2022, 21:43 UTC
- Message-ID
- <xmqqmtk76x2n.fsf@gitster.g>
- In-Reply-To
- <20220107091432.581225-1-fs@gigacodes.de>
Fabian Stelzer <fs@gigacodes.de> writes:
Show 13 quoted lines
> To test for a key that is completely unknown to the keyring we need one > to sign the commit with. This was done by generating a new key and not > add it into the keyring. To avoid the key generation overhead and > problems where GPG did hang in CI during it, switch GNUPGHOME to an > empty directory instead, therefore making all used keys unknown for this > single `verify-commit` call. > > Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> > Signed-off-by: Fabian Stelzer <fs@gigacodes.de> > --- > This was reported by Ævar in <211222.86ilvhpbl0.gmgdl@evledraar.gmail.com>. > Just using an empty keyring / gpg homedir should achieve the same effect and > keeps the stress of generating a gpg key out of the CI.
Clever. Losing lines of code and gaining more stability in CI is a great thing.
Show 45 quoted lines
>
>
> t/t7510-signed-commit.sh | 22 ++--------------------
> 1 file changed, 2 insertions(+), 20 deletions(-)
>
> diff --git a/t/t7510-signed-commit.sh b/t/t7510-signed-commit.sh
> index 9882b69ae2..2d38580847 100755
> --- a/t/t7510-signed-commit.sh
> +++ b/t/t7510-signed-commit.sh
> @@ -71,25 +71,7 @@ test_expect_success GPG 'create signed commits' '
> git tag eleventh-signed $(cat oid) &&
> echo 12 | git commit-tree --gpg-sign=B7227189 HEAD^{tree} >oid &&
> test_line_count = 1 oid &&
> - git tag twelfth-signed-alt $(cat oid) &&
> -
> - cat >keydetails <<-\EOF &&
> - Key-Type: RSA
> - Key-Length: 2048
> - Subkey-Type: RSA
> - Subkey-Length: 2048
> - Name-Real: Unknown User
> - Name-Email: unknown@git.com
> - Expire-Date: 0
> - %no-ask-passphrase
> - %no-protection
> - EOF
> - gpg --batch --gen-key keydetails &&
> - echo 13 >file && git commit -a -S"unknown@git.com" -m thirteenth &&
> - git tag thirteenth-signed &&
> - DELETE_FINGERPRINT=$(gpg -K --with-colons --fingerprint --batch unknown@git.com | grep "^fpr" | head -n 1 | awk -F ":" "{print \$10;}") &&
> - gpg --batch --yes --delete-secret-keys $DELETE_FINGERPRINT &&
> - gpg --batch --yes --delete-keys unknown@git.com
> + git tag twelfth-signed-alt $(cat oid)
> '
>
> test_expect_success GPG 'verify and show signatures' '
> @@ -129,7 +111,7 @@ test_expect_success GPG 'verify and show signatures' '
> '
>
> test_expect_success GPG 'verify-commit exits failure on unknown signature' '
> - test_must_fail git verify-commit thirteenth-signed 2>actual &&
> + GNUPGHOME=./empty_home test_must_fail git verify-commit initial 2>actual &&
> ! grep "Good signature from" actual &&
> ! grep "BAD signature from" actual &&
> grep -q -F -e "No public key" -e "public key not found" actual