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 cc400f5011 (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>
maint
Ævar Arnfjörð Bjarmason 2021-01-05 20:42:42 +01:00 committed by Junio C Hamano
parent 30f882c16d
commit 692654dca0
1 changed files with 34 additions and 1 deletions

View File

@ -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)
'

############################################################
@ -180,6 +184,35 @@ tagger . <> 0 +0000

EOF

check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
'^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'