summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorLibravatar Ævar Arnfjörð Bjarmason <avarab@gmail.com>2021-01-05 20:42:42 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-01-05 14:58:29 -0800
commit692654dca01dda9951a81de4ecfa958b61b8bc5c (patch)
tree7dfdba837cecba451b08fc503279c2e053f2cc54 /t
parentmktag tests: improve verify_object() test coverage (diff)
downloadtgif-692654dca01dda9951a81de4ecfa958b61b8bc5c.tar.xz
mktag tests: test verify_object() with replaced objects
Add tests to demonstrate what "mktag" does in the face of replaced objects. There was an existing test for replaced objects fed to "mktag" added in cc400f50112 (mktag: call "check_sha1_signature" with the replacement sha1, 2009-01-23), but that one only tests a commit->commit mapping. Not a mapping to a different type as like we're also testing for here. We could remove the "mktag" test in t6050-replace.sh now if the created tag wasn't being used by a subsequent "fsck" test. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-xt/t3800-mktag.sh35
1 files changed, 34 insertions, 1 deletions
diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh
index 1cc382dc8b..8bf0e88115 100755
--- a/t/t3800-mktag.sh
+++ b/t/t3800-mktag.sh
@@ -38,7 +38,11 @@ test_expect_mktag_success() {
# for the tag.
test_expect_success 'setup' '
test_commit A &&
- head=$(git rev-parse --verify HEAD)
+ test_commit B &&
+ head=$(git rev-parse --verify HEAD) &&
+ head_parent=$(git rev-parse --verify HEAD~) &&
+ tree=$(git rev-parse HEAD^{tree}) &&
+ blob=$(git rev-parse --verify HEAD:B.t)
'
############################################################
@@ -184,6 +188,35 @@ check_verify_failure 'verify object (hash/type) check -- mismatched type, valid
'^error: char7: could not verify object'
############################################################
+# 9.5. verify object (hash/type) check -- replacement
+
+test_expect_success 'setup replacement of commit -> commit and tree -> blob' '
+ git replace $head_parent $head &&
+ git replace -f $tree $blob
+'
+
+cat >tag.sig <<EOF
+object $head_parent
+type commit
+tag mytag
+tagger . <> 0 +0000
+
+EOF
+
+test_expect_mktag_success 'tag to a commit replaced by another commit'
+
+cat >tag.sig <<EOF
+object $tree
+type tree
+tag mytag
+tagger . <> 0 +0000
+
+EOF
+
+check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
+ '^error: char7: could not verify object'
+
+############################################################
# 10. verify tag-name check
cat >tag.sig <<EOF