t: use hash-object --literally when created malformed objects
Many test scripts use hash-object to create malformed objects to see how we handle the results in various commands. In some cases we already have to use "hash-object --literally", because it does some rudimentary quality checks. But let's use "--literally" more consistently to future-proof these tests against hash-object learning to be more careful. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ad5dfeac04
commit
34959d80db
@ -212,7 +212,7 @@ test_expect_success 'email without @ is okay' '
|
|||||||
test_expect_success 'email with embedded > is not okay' '
|
test_expect_success 'email with embedded > is not okay' '
|
||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/@[a-z]/&>/" basis >bad-email &&
|
sed "s/@[a-z]/&>/" basis >bad-email &&
|
||||||
new=$(git hash-object -t commit -w --stdin <bad-email) &&
|
new=$(git hash-object --literally -t commit -w --stdin <bad-email) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -223,7 +223,7 @@ test_expect_success 'email with embedded > is not okay' '
|
|||||||
test_expect_success 'missing < email delimiter is reported nicely' '
|
test_expect_success 'missing < email delimiter is reported nicely' '
|
||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/<//" basis >bad-email-2 &&
|
sed "s/<//" basis >bad-email-2 &&
|
||||||
new=$(git hash-object -t commit -w --stdin <bad-email-2) &&
|
new=$(git hash-object --literally -t commit -w --stdin <bad-email-2) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -234,7 +234,7 @@ test_expect_success 'missing < email delimiter is reported nicely' '
|
|||||||
test_expect_success 'missing email is reported nicely' '
|
test_expect_success 'missing email is reported nicely' '
|
||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/[a-z]* <[^>]*>//" basis >bad-email-3 &&
|
sed "s/[a-z]* <[^>]*>//" basis >bad-email-3 &&
|
||||||
new=$(git hash-object -t commit -w --stdin <bad-email-3) &&
|
new=$(git hash-object --literally -t commit -w --stdin <bad-email-3) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -245,7 +245,7 @@ test_expect_success 'missing email is reported nicely' '
|
|||||||
test_expect_success '> in name is reported' '
|
test_expect_success '> in name is reported' '
|
||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/ </> </" basis >bad-email-4 &&
|
sed "s/ </> </" basis >bad-email-4 &&
|
||||||
new=$(git hash-object -t commit -w --stdin <bad-email-4) &&
|
new=$(git hash-object --literally -t commit -w --stdin <bad-email-4) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -258,7 +258,7 @@ test_expect_success 'integer overflow in timestamps is reported' '
|
|||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/^\\(author .*>\\) [0-9]*/\\1 18446744073709551617/" \
|
sed "s/^\\(author .*>\\) [0-9]*/\\1 18446744073709551617/" \
|
||||||
<basis >bad-timestamp &&
|
<basis >bad-timestamp &&
|
||||||
new=$(git hash-object -t commit -w --stdin <bad-timestamp) &&
|
new=$(git hash-object --literally -t commit -w --stdin <bad-timestamp) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -269,7 +269,7 @@ test_expect_success 'integer overflow in timestamps is reported' '
|
|||||||
test_expect_success 'commit with NUL in header' '
|
test_expect_success 'commit with NUL in header' '
|
||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/author ./author Q/" <basis | q_to_nul >commit-NUL-header &&
|
sed "s/author ./author Q/" <basis | q_to_nul >commit-NUL-header &&
|
||||||
new=$(git hash-object -t commit -w --stdin <commit-NUL-header) &&
|
new=$(git hash-object --literally -t commit -w --stdin <commit-NUL-header) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -292,7 +292,7 @@ test_expect_success 'tree object with duplicate entries' '
|
|||||||
git cat-file tree $T &&
|
git cat-file tree $T &&
|
||||||
git cat-file tree $T
|
git cat-file tree $T
|
||||||
) |
|
) |
|
||||||
git hash-object -w -t tree --stdin
|
git hash-object --literally -w -t tree --stdin
|
||||||
) &&
|
) &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
test_i18ngrep "error in tree .*contains duplicate file entries" out
|
test_i18ngrep "error in tree .*contains duplicate file entries" out
|
||||||
@ -426,7 +426,7 @@ test_expect_success 'tag with incorrect tag name & missing tagger' '
|
|||||||
This is an invalid tag.
|
This is an invalid tag.
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
tag=$(git hash-object -t tag -w --stdin <wrong-tag) &&
|
tag=$(git hash-object --literally -t tag -w --stdin <wrong-tag) &&
|
||||||
test_when_finished "remove_object $tag" &&
|
test_when_finished "remove_object $tag" &&
|
||||||
echo $tag >.git/refs/tags/wrong &&
|
echo $tag >.git/refs/tags/wrong &&
|
||||||
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
||||||
@ -558,7 +558,7 @@ test_expect_success 'rev-list --verify-objects with commit graph (parent)' '
|
|||||||
test_expect_success 'force fsck to ignore double author' '
|
test_expect_success 'force fsck to ignore double author' '
|
||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/^author .*/&,&/" <basis | tr , \\n >multiple-authors &&
|
sed "s/^author .*/&,&/" <basis | tr , \\n >multiple-authors &&
|
||||||
new=$(git hash-object -t commit -w --stdin <multiple-authors) &&
|
new=$(git hash-object --literally -t commit -w --stdin <multiple-authors) &&
|
||||||
test_when_finished "remove_object $new" &&
|
test_when_finished "remove_object $new" &&
|
||||||
git update-ref refs/heads/bogus "$new" &&
|
git update-ref refs/heads/bogus "$new" &&
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
@ -573,7 +573,7 @@ test_expect_success 'fsck notices blob entry pointing to null sha1' '
|
|||||||
(git init null-blob &&
|
(git init null-blob &&
|
||||||
cd null-blob &&
|
cd null-blob &&
|
||||||
sha=$(printf "100644 file$_bz$_bzoid" |
|
sha=$(printf "100644 file$_bz$_bzoid" |
|
||||||
git hash-object -w --stdin -t tree) &&
|
git hash-object --literally -w --stdin -t tree) &&
|
||||||
git fsck 2>out &&
|
git fsck 2>out &&
|
||||||
test_i18ngrep "warning.*null sha1" out
|
test_i18ngrep "warning.*null sha1" out
|
||||||
)
|
)
|
||||||
@ -583,7 +583,7 @@ test_expect_success 'fsck notices submodule entry pointing to null sha1' '
|
|||||||
(git init null-commit &&
|
(git init null-commit &&
|
||||||
cd null-commit &&
|
cd null-commit &&
|
||||||
sha=$(printf "160000 submodule$_bz$_bzoid" |
|
sha=$(printf "160000 submodule$_bz$_bzoid" |
|
||||||
git hash-object -w --stdin -t tree) &&
|
git hash-object --literally -w --stdin -t tree) &&
|
||||||
git fsck 2>out &&
|
git fsck 2>out &&
|
||||||
test_i18ngrep "warning.*null sha1" out
|
test_i18ngrep "warning.*null sha1" out
|
||||||
)
|
)
|
||||||
@ -648,7 +648,7 @@ test_expect_success 'NUL in commit' '
|
|||||||
git commit --allow-empty -m "initial commitQNUL after message" &&
|
git commit --allow-empty -m "initial commitQNUL after message" &&
|
||||||
git cat-file commit HEAD >original &&
|
git cat-file commit HEAD >original &&
|
||||||
q_to_nul <original >munged &&
|
q_to_nul <original >munged &&
|
||||||
git hash-object -w -t commit --stdin <munged >name &&
|
git hash-object --literally -w -t commit --stdin <munged >name &&
|
||||||
git branch bad $(cat name) &&
|
git branch bad $(cat name) &&
|
||||||
|
|
||||||
test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 &&
|
test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 &&
|
||||||
@ -794,8 +794,8 @@ test_expect_success 'fsck errors in packed objects' '
|
|||||||
git cat-file commit HEAD >basis &&
|
git cat-file commit HEAD >basis &&
|
||||||
sed "s/</one/" basis >one &&
|
sed "s/</one/" basis >one &&
|
||||||
sed "s/</foo/" basis >two &&
|
sed "s/</foo/" basis >two &&
|
||||||
one=$(git hash-object -t commit -w one) &&
|
one=$(git hash-object --literally -t commit -w one) &&
|
||||||
two=$(git hash-object -t commit -w two) &&
|
two=$(git hash-object --literally -t commit -w two) &&
|
||||||
pack=$(
|
pack=$(
|
||||||
{
|
{
|
||||||
echo $one &&
|
echo $one &&
|
||||||
|
@ -10,7 +10,7 @@ test_expect_success 'create bogus tree' '
|
|||||||
bogus_tree=$(
|
bogus_tree=$(
|
||||||
printf "100644 fooQ$name" |
|
printf "100644 fooQ$name" |
|
||||||
q_to_nul |
|
q_to_nul |
|
||||||
git hash-object -w --stdin -t tree
|
git hash-object --literally -w --stdin -t tree
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ make_tree () {
|
|||||||
make_tree_entry "$1" "$2" "$3"
|
make_tree_entry "$1" "$2" "$3"
|
||||||
shift; shift; shift
|
shift; shift; shift
|
||||||
done |
|
done |
|
||||||
git hash-object -w -t tree --stdin
|
git hash-object --literally -w -t tree --stdin
|
||||||
}
|
}
|
||||||
|
|
||||||
# this is kind of a convoluted setup, but matches
|
# this is kind of a convoluted setup, but matches
|
||||||
|
@ -10,7 +10,7 @@ test_expect_success 'setup' '
|
|||||||
|
|
||||||
git cat-file commit HEAD |
|
git cat-file commit HEAD |
|
||||||
sed "/^author /s/>/>-<>/" >broken_email.commit &&
|
sed "/^author /s/>/>-<>/" >broken_email.commit &&
|
||||||
git hash-object -w -t commit broken_email.commit >broken_email.hash &&
|
git hash-object --literally -w -t commit broken_email.commit >broken_email.hash &&
|
||||||
git update-ref refs/heads/broken_email $(cat broken_email.hash)
|
git update-ref refs/heads/broken_email $(cat broken_email.hash)
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ test_expect_success 'git log --format with broken author email' '
|
|||||||
munge_author_date () {
|
munge_author_date () {
|
||||||
git cat-file commit "$1" >commit.orig &&
|
git cat-file commit "$1" >commit.orig &&
|
||||||
sed "s/^\(author .*>\) [0-9]*/\1 $2/" <commit.orig >commit.munge &&
|
sed "s/^\(author .*>\) [0-9]*/\1 $2/" <commit.orig >commit.munge &&
|
||||||
git hash-object -w -t commit commit.munge
|
git hash-object --literally -w -t commit commit.munge
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success 'unparsable dates produce sentinel value' '
|
test_expect_success 'unparsable dates produce sentinel value' '
|
||||||
|
@ -263,7 +263,7 @@ tag guten tag
|
|||||||
This is an invalid tag.
|
This is an invalid tag.
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
tag=$(git hash-object -t tag -w --stdin <wrong-tag) &&
|
tag=$(git hash-object -t tag -w --stdin --literally <wrong-tag) &&
|
||||||
pack1=$(echo $tag $sha | git pack-objects tag-test) &&
|
pack1=$(echo $tag $sha | git pack-objects tag-test) &&
|
||||||
echo remove tag object &&
|
echo remove tag object &&
|
||||||
thirtyeight=${tag#??} &&
|
thirtyeight=${tag#??} &&
|
||||||
|
@ -138,7 +138,7 @@ This commit object intentionally broken
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'setup bogus commit' '
|
test_expect_success 'setup bogus commit' '
|
||||||
commit="$(git hash-object -t commit -w --stdin <bogus-commit)"
|
commit="$(git hash-object --literally -t commit -w --stdin <bogus-commit)"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'fsck with no skipList input' '
|
test_expect_success 'fsck with no skipList input' '
|
||||||
|
@ -1114,7 +1114,7 @@ test_expect_success 'packfile-uri with transfer.fsckobjects fails on bad object'
|
|||||||
|
|
||||||
This commit object intentionally broken
|
This commit object intentionally broken
|
||||||
EOF
|
EOF
|
||||||
BOGUS=$(git -C "$P" hash-object -t commit -w --stdin <bogus-commit) &&
|
BOGUS=$(git -C "$P" hash-object -t commit -w --stdin --literally <bogus-commit) &&
|
||||||
git -C "$P" branch bogus-branch "$BOGUS" &&
|
git -C "$P" branch bogus-branch "$BOGUS" &&
|
||||||
|
|
||||||
echo my-blob >"$P/my-blob" &&
|
echo my-blob >"$P/my-blob" &&
|
||||||
|
@ -606,7 +606,7 @@ test_expect_success 'create tag without tagger' '
|
|||||||
git tag -a -m "Broken tag" taggerless &&
|
git tag -a -m "Broken tag" taggerless &&
|
||||||
git tag -f taggerless $(git cat-file tag taggerless |
|
git tag -f taggerless $(git cat-file tag taggerless |
|
||||||
sed -e "/^tagger /d" |
|
sed -e "/^tagger /d" |
|
||||||
git hash-object --stdin -w -t tag)
|
git hash-object --literally --stdin -w -t tag)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_atom refs/tags/taggerless type 'commit'
|
test_atom refs/tags/taggerless type 'commit'
|
||||||
|
@ -105,7 +105,7 @@ test_expect_success '--amend option with empty author' '
|
|||||||
test_expect_success '--amend option with missing author' '
|
test_expect_success '--amend option with missing author' '
|
||||||
git cat-file commit Initial >tmp &&
|
git cat-file commit Initial >tmp &&
|
||||||
sed "s/author [^<]* </author </" tmp >malformed &&
|
sed "s/author [^<]* </author </" tmp >malformed &&
|
||||||
sha=$(git hash-object -t commit -w malformed) &&
|
sha=$(git hash-object --literally -t commit -w malformed) &&
|
||||||
test_when_finished "remove_object $sha" &&
|
test_when_finished "remove_object $sha" &&
|
||||||
git checkout $sha &&
|
git checkout $sha &&
|
||||||
test_when_finished "git checkout Initial" &&
|
test_when_finished "git checkout Initial" &&
|
||||||
|
@ -202,7 +202,7 @@ test_expect_success GPG 'detect fudged signature with NUL' '
|
|||||||
git cat-file commit seventh-signed >raw &&
|
git cat-file commit seventh-signed >raw &&
|
||||||
cat raw >forged2 &&
|
cat raw >forged2 &&
|
||||||
echo Qwik | tr "Q" "\000" >>forged2 &&
|
echo Qwik | tr "Q" "\000" >>forged2 &&
|
||||||
git hash-object -w -t commit forged2 >forged2.commit &&
|
git hash-object --literally -w -t commit forged2 >forged2.commit &&
|
||||||
test_must_fail git verify-commit $(cat forged2.commit) &&
|
test_must_fail git verify-commit $(cat forged2.commit) &&
|
||||||
git show --pretty=short --show-signature $(cat forged2.commit) >actual2 &&
|
git show --pretty=short --show-signature $(cat forged2.commit) >actual2 &&
|
||||||
grep "BAD signature from" actual2 &&
|
grep "BAD signature from" actual2 &&
|
||||||
|
@ -270,7 +270,7 @@ test_expect_success GPGSSH 'detect fudged signature with NUL' '
|
|||||||
git cat-file commit seventh-signed >raw &&
|
git cat-file commit seventh-signed >raw &&
|
||||||
cat raw >forged2 &&
|
cat raw >forged2 &&
|
||||||
echo Qwik | tr "Q" "\000" >>forged2 &&
|
echo Qwik | tr "Q" "\000" >>forged2 &&
|
||||||
git hash-object -w -t commit forged2 >forged2.commit &&
|
git hash-object --literally -w -t commit forged2 >forged2.commit &&
|
||||||
test_must_fail git verify-commit $(cat forged2.commit) &&
|
test_must_fail git verify-commit $(cat forged2.commit) &&
|
||||||
git show --pretty=short --show-signature $(cat forged2.commit) >actual2 &&
|
git show --pretty=short --show-signature $(cat forged2.commit) >actual2 &&
|
||||||
grep "${GPGSSH_BAD_SIGNATURE}" actual2 &&
|
grep "${GPGSSH_BAD_SIGNATURE}" actual2 &&
|
||||||
|
@ -201,7 +201,7 @@ committer David Reiss <dreiss@facebook.com> 1234567890 +0000
|
|||||||
|
|
||||||
some message
|
some message
|
||||||
EOF
|
EOF
|
||||||
COMMIT=$(git hash-object -t commit -w badcommit) &&
|
COMMIT=$(git hash-object --literally -t commit -w badcommit) &&
|
||||||
git --no-pager blame $COMMIT -- uno >/dev/null
|
git --no-pager blame $COMMIT -- uno >/dev/null
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -373,7 +373,7 @@ EOF
|
|||||||
|
|
||||||
test_expect_success 'cope with tagger-less tags' '
|
test_expect_success 'cope with tagger-less tags' '
|
||||||
|
|
||||||
TAG=$(git hash-object -t tag -w tag-content) &&
|
TAG=$(git hash-object --literally -t tag -w tag-content) &&
|
||||||
git update-ref refs/tags/sonnenschein $TAG &&
|
git update-ref refs/tags/sonnenschein $TAG &&
|
||||||
git fast-export -C -C --signed-tags=strip --all > output &&
|
git fast-export -C -C --signed-tags=strip --all > output &&
|
||||||
test $(grep -c "^tag " output) = 4 &&
|
test $(grep -c "^tag " output) = 4 &&
|
||||||
|
Loading…
Reference in New Issue
Block a user