]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t4202-log.sh
Merge branch 'hi/gpg-prefer-check-signature'
[thirdparty/git.git] / t / t4202-log.sh
index 0f766ba65f598c105bbce6f8f3aa2d4cda1c0de3..5eeb739f3ed4bb44a8951fb223445ead15dc61c8 100755 (executable)
@@ -1627,6 +1627,66 @@ test_expect_success GPG 'log --graph --show-signature for merged tag in shallow
        grep "tag signed_tag_shallow names a non-parent $hash" actual
 '
 
+test_expect_success GPG 'log --graph --show-signature for merged tag with missing key' '
+       test_when_finished "git reset --hard && git checkout master" &&
+       git checkout -b plain-nokey master &&
+       echo aaa >bar &&
+       git add bar &&
+       git commit -m bar_commit &&
+       git checkout -b tagged-nokey master &&
+       echo bbb >baz &&
+       git add baz &&
+       git commit -m baz_commit &&
+       git tag -s -m signed_tag_msg signed_tag_nokey &&
+       git checkout plain-nokey &&
+       git merge --no-ff -m msg signed_tag_nokey &&
+       GNUPGHOME=. git log --graph --show-signature -n1 plain-nokey >actual &&
+       grep "^|\\\  merged tag" actual &&
+       grep "^| | gpg: Signature made" actual &&
+       grep "^| | gpg: Can'"'"'t check signature: \(public key not found\|No public key\)" actual
+'
+
+test_expect_success GPG 'log --graph --show-signature for merged tag with bad signature' '
+       test_when_finished "git reset --hard && git checkout master" &&
+       git checkout -b plain-bad master &&
+       echo aaa >bar &&
+       git add bar &&
+       git commit -m bar_commit &&
+       git checkout -b tagged-bad master &&
+       echo bbb >baz &&
+       git add baz &&
+       git commit -m baz_commit &&
+       git tag -s -m signed_tag_msg signed_tag_bad &&
+       git cat-file tag signed_tag_bad >raw &&
+       sed -e "s/signed_tag_msg/forged/" raw >forged &&
+       git hash-object -w -t tag forged >forged.tag &&
+       git checkout plain-bad &&
+       git merge --no-ff -m msg "$(cat forged.tag)" &&
+       git log --graph --show-signature -n1 plain-bad >actual &&
+       grep "^|\\\  merged tag" actual &&
+       grep "^| | gpg: Signature made" actual &&
+       grep "^| | gpg: BAD signature from" actual
+'
+
+test_expect_success GPG 'log --show-signature for merged tag with GPG failure' '
+       test_when_finished "git reset --hard && git checkout master" &&
+       git checkout -b plain-fail master &&
+       echo aaa >bar &&
+       git add bar &&
+       git commit -m bar_commit &&
+       git checkout -b tagged-fail master &&
+       echo bbb >baz &&
+       git add baz &&
+       git commit -m baz_commit &&
+       git tag -s -m signed_tag_msg signed_tag_fail &&
+       git checkout plain-fail &&
+       git merge --no-ff -m msg signed_tag_fail &&
+       TMPDIR="$(pwd)/bogus" git log --show-signature -n1 plain-fail >actual &&
+       grep "^merged tag" actual &&
+       grep "^No signature" actual &&
+       ! grep "^gpg: Signature made" actual
+'
+
 test_expect_success GPGSM 'log --graph --show-signature for merged tag x509' '
        test_when_finished "git reset --hard && git checkout master" &&
        test_config gpg.format x509 &&
@@ -1648,6 +1708,51 @@ test_expect_success GPGSM 'log --graph --show-signature for merged tag x509' '
        grep "^| | gpgsm: Good signature" actual
 '
 
+test_expect_success GPGSM 'log --graph --show-signature for merged tag x509 missing key' '
+       test_when_finished "git reset --hard && git checkout master" &&
+       test_config gpg.format x509 &&
+       test_config user.signingkey $GIT_COMMITTER_EMAIL &&
+       git checkout -b plain-x509-nokey master &&
+       echo aaa >bar &&
+       git add bar &&
+       git commit -m bar_commit &&
+       git checkout -b tagged-x509-nokey master &&
+       echo bbb >baz &&
+       git add baz &&
+       git commit -m baz_commit &&
+       git tag -s -m signed_tag_msg signed_tag_x509_nokey &&
+       git checkout plain-x509-nokey &&
+       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
+'
+
+test_expect_success GPGSM 'log --graph --show-signature for merged tag x509 bad signature' '
+       test_when_finished "git reset --hard && git checkout master" &&
+       test_config gpg.format x509 &&
+       test_config user.signingkey $GIT_COMMITTER_EMAIL &&
+       git checkout -b plain-x509-bad master &&
+       echo aaa >bar &&
+       git add bar &&
+       git commit -m bar_commit &&
+       git checkout -b tagged-x509-bad master &&
+       echo bbb >baz &&
+       git add baz &&
+       git commit -m baz_commit &&
+       git tag -s -m signed_tag_msg signed_tag_x509_bad &&
+       git cat-file tag signed_tag_x509_bad >raw &&
+       sed -e "s/signed_tag_msg/forged/" raw >forged &&
+       git hash-object -w -t tag forged >forged.tag &&
+       git checkout plain-x509-bad &&
+       git merge --no-ff -m msg "$(cat forged.tag)" &&
+       git log --graph --show-signature -n1 plain-x509-bad >actual &&
+       grep "^|\\\  merged tag" actual &&
+       grep "^| | gpgsm: Signature made" actual &&
+       grep "^| | gpgsm: invalid signature" actual
+'
+
+
 test_expect_success GPG '--no-show-signature overrides --show-signature' '
        git log -1 --show-signature --no-show-signature signed >actual &&
        ! grep "^gpg:" actual