gpgsm v2.3 changed some details about its output: - instead of displaying `fingerprint:` for keys it will print `sha1 fpr:` and `sha2 fpr:` - some wording of errors has changed - signing will omit an extra debug output line before the [GNUPG]: tag This change adjusts the gpgsm test prerequisite to work with v2.3 as well by accepting `sha1 fpr:` as well as `fingerprint:` and allows both variants of errors for unknown certs. Checking for successful signature creation will omit the leading NL in its search string. --- I am not a user of gpgsm but noticed that the GPGSM test prereq was disabled on my runs so i investigated. The `fix` seems rather trivial and I tried to test this as thorough as possible. I ran the test suite on machines available to me (fedora35, centos8) and did a full CI run on github without any issues. But if you actually use gpgsm with git please give this a go and let me know if I missed anything. gpg-interface.c | 2 +- t/lib-gpg.sh | 4 ++-- t/t4202-log.sh | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gpg-interface.c b/gpg-interface.c index b52eb0e2e0..299e7f588a 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -939,7 +939,7 @@ static int sign_buffer_gpg(struct strbuf *buffer, struct strbuf *signature, signature, 1024, &gpg_status, 0); sigchain_pop(SIGPIPE); - ret |= !strstr(gpg_status.buf, "\n[GNUPG:] SIG_CREATED "); + ret |= !strstr(gpg_status.buf, "[GNUPG:] SIG_CREATED "); strbuf_release(&gpg_status); if (ret) return error(_("gpg failed to sign the data")); diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh index 3e7ee1386a..6c2dd4b14b 100644 --- a/t/lib-gpg.sh +++ b/t/lib-gpg.sh @@ -73,8 +73,8 @@ test_lazy_prereq GPGSM ' --import "$TEST_DIRECTORY"/lib-gpg/gpgsm_cert.p12 && gpgsm --homedir "${GNUPGHOME}" -K | - grep fingerprint: | - cut -d" " -f4 | + grep -E "(fingerprint|sha1 fpr):" | + cut -d":" -f2- | tr -d " " | tr -d "\\n" >"${GNUPGHOME}/trustlist.txt" && echo " S relax" >>"${GNUPGHOME}/trustlist.txt" && diff --git a/t/t4202-log.sh b/t/t4202-log.sh index 5049559861..08556493ce 100755 --- a/t/t4202-log.sh +++ b/t/t4202-log.sh @@ -1931,7 +1931,10 @@ test_expect_success GPGSM 'log --graph --show-signature for merged tag x509 miss git merge --no-ff -m msg signed_tag_x509_nokey && GNUPGHOME=. git log --graph --show-signature -n1 plain-x509-nokey >actual && grep "^|\\\ merged tag" actual && - grep "^| | gpgsm: certificate not found" actual + ( + grep "^| | gpgsm: certificate not found" actual || + grep "^| | gpgsm: failed to find the certificate: Not found" actual + ) ' test_expect_success GPGSM 'log --graph --show-signature for merged tag x509 bad signature' ' -- 2.34.1