mktag tests: test update-ref and reachable fsck
Extend the mktag tests to pass the created bad tag through update-ref
and fsck.
The reason for passing it through update-ref is to guard against it
having a segfault as for-each-ref did before c685450880
(ref-filter:
fix NULL check for parse object failure, 2021-04-01).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
47c0cb1a5d
commit
eddc1f556c
@ -44,11 +44,13 @@ check_verify_failure () {
|
||||
'
|
||||
|
||||
test_expect_success "setup: $subject" '
|
||||
tag_ref=refs/tags/bad_tag &&
|
||||
|
||||
# Reset any leftover state from the last $subject
|
||||
rm -rf bad-tag &&
|
||||
|
||||
git init --bare bad-tag &&
|
||||
git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig
|
||||
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
|
||||
'
|
||||
|
||||
test_expect_success "hash-object & fsck unreachable: $subject" '
|
||||
@ -59,6 +61,23 @@ check_verify_failure () {
|
||||
test_must_fail git -C bad-tag fsck
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success "update-ref & fsck reachable: $subject" '
|
||||
# Make sure the earlier test created it for us
|
||||
git rev-parse "$bad_tag" &&
|
||||
|
||||
# The update-ref of the bad content will fail, do it
|
||||
# anyway to see if it segfaults
|
||||
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
|
||||
|
||||
# Manually create the broken, we cannot do it with
|
||||
# update-ref
|
||||
echo "$bad_tag" >"bad-tag/$tag_ref" &&
|
||||
|
||||
# Unlike fsck-ing unreachable content above, this
|
||||
# will always fail.
|
||||
test_must_fail git -C bad-tag fsck
|
||||
'
|
||||
}
|
||||
|
||||
test_expect_mktag_success() {
|
||||
|
Loading…
Reference in New Issue
Block a user