tests: Work around GPG 2.2.45 error behaviour when revoking an expired key
authorSimon McVittie <smcv@debian.org>
Thu, 31 Oct 2024 10:54:13 +0000 (10:54 +0000)
committerSimon McVittie <smcv@debian.org>
Thu, 31 Oct 2024 10:54:23 +0000 (10:54 +0000)
In GPG 2.2.45, a diagnostic message about the only trusted key having
already expired causes this import to produce exit status 2, but the
import still succeeds (the key is still revoked).

Bug: https://dev.gnupg.org/T7351
Bug-Debian: https://bugs.debian.org/1086140

tests/test-remote-gpg-list-keys.sh

index 1c1697d1a6e39c283968ad72a47033a963df70b9..de24bf4da2a6eecac2b44aa4a5f6196f43a4d744 100755 (executable)
@@ -137,8 +137,23 @@ else
 
     echo "ok remote expired key"
 
+    # GPG 2.2.45 fails with exit status 2 when importing a revocation cert
+    # for a key that already expired. https://dev.gnupg.org/T7351
+    may_exit_2 () {
+        local e=0
+        "$@" || e="$?"
+        case "$e" in
+            (0|2)
+                return 0
+                ;;
+            (*)
+                fatal "should have exited with status 0 or 2, not $e: $*"
+                ;;
+        esac
+    }
+
     # Revoke key1 and re-import it.
-    ${GPG} --homedir=${TEST_GPG_KEYHOME} --import ${TEST_GPG_KEYHOME}/revocations/key1.rev
+    may_exit_2 ${GPG} --homedir=${TEST_GPG_KEYHOME} --import ${TEST_GPG_KEYHOME}/revocations/key1.rev
     ${GPG} --homedir=${test_tmpdir}/gpghome --armor --export ${TEST_GPG_KEYID_1} > ${test_tmpdir}/key1revoked.asc
     ${OSTREE} remote gpg-import --keyring ${test_tmpdir}/key1revoked.asc R1
     ${OSTREE} remote gpg-list-keys R1 > result