Merge branch 'ab/mktag-tests'
Fill test gaps. * ab/mktag-tests: mktag tests: test fast-export mktag tests: test for-each-ref mktag tests: test update-ref and reachable fsck mktag tests: test hash-object --literally and unreachable fsck mktag tests: invert --no-strict test mktag tests: parse out options in helper
This commit is contained in:
commit
3cc43bff9c
121
t/t3800-mktag.sh
121
t/t3800-mktag.sh
@ -12,15 +12,93 @@ test_description='git mktag: tag object verify test'
|
|||||||
# given in the expect.pat file.
|
# given in the expect.pat file.
|
||||||
|
|
||||||
check_verify_failure () {
|
check_verify_failure () {
|
||||||
test_expect_success "$1" "
|
subject=$1 &&
|
||||||
test_must_fail git mktag <tag.sig 2>message &&
|
message=$2 &&
|
||||||
grep '$2' message &&
|
shift 2 &&
|
||||||
if test '$3' != '--no-strict'
|
|
||||||
|
no_strict= &&
|
||||||
|
fsck_obj_ok= &&
|
||||||
|
no_strict= &&
|
||||||
|
while test $# != 0
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
--no-strict)
|
||||||
|
no_strict=yes
|
||||||
|
;;
|
||||||
|
--fsck-obj-ok)
|
||||||
|
fsck_obj_ok=yes
|
||||||
|
;;
|
||||||
|
esac &&
|
||||||
|
shift
|
||||||
|
done &&
|
||||||
|
|
||||||
|
test_expect_success "fail with [--[no-]strict]: $subject" '
|
||||||
|
test_must_fail git mktag <tag.sig 2>err &&
|
||||||
|
if test -z "$no_strict"
|
||||||
then
|
then
|
||||||
test_must_fail git mktag --no-strict <tag.sig 2>message.no-strict &&
|
test_must_fail git mktag <tag.sig 2>err2 &&
|
||||||
grep '$2' message.no-strict
|
test_cmp err err2
|
||||||
|
else
|
||||||
|
git mktag --no-strict <tag.sig
|
||||||
fi
|
fi
|
||||||
"
|
'
|
||||||
|
|
||||||
|
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 &&
|
||||||
|
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "hash-object & fsck unreachable: $subject" '
|
||||||
|
if test -n "$fsck_obj_ok"
|
||||||
|
then
|
||||||
|
git -C bad-tag fsck
|
||||||
|
else
|
||||||
|
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_success "for-each-ref: $subject" '
|
||||||
|
# Make sure the earlier test created it for us
|
||||||
|
git rev-parse "$bad_tag" &&
|
||||||
|
|
||||||
|
echo "$bad_tag" >"bad-tag/$tag_ref" &&
|
||||||
|
|
||||||
|
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
|
||||||
|
git -C bad-tag for-each-ref "$tag_ref" >actual &&
|
||||||
|
test_cmp expected actual &&
|
||||||
|
|
||||||
|
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "fast-export & fast-import: $subject" '
|
||||||
|
# Make sure the earlier test created it for us
|
||||||
|
git rev-parse "$bad_tag" &&
|
||||||
|
|
||||||
|
test_must_fail git -C bad-tag fast-export --all &&
|
||||||
|
test_must_fail git -C bad-tag fast-export "$bad_tag"
|
||||||
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_mktag_success() {
|
test_expect_mktag_success() {
|
||||||
@ -167,7 +245,8 @@ tagger . <> 0 +0000
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure 'verify object (hash/type) check -- correct type, nonexisting object' \
|
check_verify_failure 'verify object (hash/type) check -- correct type, nonexisting object' \
|
||||||
'^fatal: could not read tagged object'
|
'^fatal: could not read tagged object' \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
cat >tag.sig <<EOF
|
cat >tag.sig <<EOF
|
||||||
object $head
|
object $head
|
||||||
@ -200,7 +279,8 @@ tagger . <> 0 +0000
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
|
check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
|
||||||
'^fatal: object.*tagged as.*tree.*but is.*commit'
|
'^fatal: object.*tagged as.*tree.*but is.*commit' \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# 9.5. verify object (hash/type) check -- replacement
|
# 9.5. verify object (hash/type) check -- replacement
|
||||||
@ -229,7 +309,8 @@ tagger . <> 0 +0000
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
|
check_verify_failure 'verify object (hash/type) check -- mismatched type, valid object' \
|
||||||
'^fatal: object.*tagged as.*tree.*but is.*blob'
|
'^fatal: object.*tagged as.*tree.*but is.*blob' \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# 10. verify tag-name check
|
# 10. verify tag-name check
|
||||||
@ -243,7 +324,9 @@ tagger . <> 0 +0000
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure 'verify tag-name check' \
|
check_verify_failure 'verify tag-name check' \
|
||||||
'^error:.* badTagName:' '--no-strict'
|
'^error:.* badTagName:' \
|
||||||
|
--no-strict \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# 11. tagger line label check #1
|
# 11. tagger line label check #1
|
||||||
@ -257,7 +340,9 @@ This is filler
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure '"tagger" line label check #1' \
|
check_verify_failure '"tagger" line label check #1' \
|
||||||
'^error:.* missingTaggerEntry:' '--no-strict'
|
'^error:.* missingTaggerEntry:' \
|
||||||
|
--no-strict \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# 12. tagger line label check #2
|
# 12. tagger line label check #2
|
||||||
@ -272,7 +357,9 @@ This is filler
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure '"tagger" line label check #2' \
|
check_verify_failure '"tagger" line label check #2' \
|
||||||
'^error:.* missingTaggerEntry:' '--no-strict'
|
'^error:.* missingTaggerEntry:' \
|
||||||
|
--no-strict \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# 13. allow missing tag author name like fsck
|
# 13. allow missing tag author name like fsck
|
||||||
@ -301,7 +388,9 @@ tagger T A Gger <
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure 'disallow malformed tagger' \
|
check_verify_failure 'disallow malformed tagger' \
|
||||||
'^error:.* badEmail:' '--no-strict'
|
'^error:.* badEmail:' \
|
||||||
|
--no-strict \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# 15. allow empty tag email
|
# 15. allow empty tag email
|
||||||
@ -425,7 +514,9 @@ this line should not be here
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_verify_failure 'detect invalid header entry' \
|
check_verify_failure 'detect invalid header entry' \
|
||||||
'^error:.* extraHeaderEntry:' '--no-strict'
|
'^error:.* extraHeaderEntry:' \
|
||||||
|
--no-strict \
|
||||||
|
--fsck-obj-ok
|
||||||
|
|
||||||
test_expect_success 'invalid header entry config & fsck' '
|
test_expect_success 'invalid header entry config & fsck' '
|
||||||
test_must_fail git mktag <tag.sig &&
|
test_must_fail git mktag <tag.sig &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user