|
|
|
@ -70,7 +70,7 @@ test_expect_success 'object with bad sha1' '
|
|
|
|
|
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "$sha.*corrupt" out
|
|
|
|
|
test_i18ngrep "$sha.*corrupt" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'branch pointing to non-commit' '
|
|
|
|
@ -78,7 +78,7 @@ test_expect_success 'branch pointing to non-commit' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/invalid" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "not a commit" out
|
|
|
|
|
test_i18ngrep "not a commit" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'HEAD link pointing at a funny object' '
|
|
|
|
@ -88,7 +88,7 @@ test_expect_success 'HEAD link pointing at a funny object' '
|
|
|
|
|
# avoid corrupt/broken HEAD from interfering with repo discovery
|
|
|
|
|
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "detached HEAD points" out
|
|
|
|
|
test_i18ngrep "detached HEAD points" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'HEAD link pointing at a funny place' '
|
|
|
|
@ -98,7 +98,7 @@ test_expect_success 'HEAD link pointing at a funny place' '
|
|
|
|
|
# avoid corrupt/broken HEAD from interfering with repo discovery
|
|
|
|
|
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "HEAD points to something strange" out
|
|
|
|
|
test_i18ngrep "HEAD points to something strange" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'HEAD link pointing at a funny object (from different wt)' '
|
|
|
|
@ -109,7 +109,7 @@ test_expect_success 'HEAD link pointing at a funny object (from different wt)' '
|
|
|
|
|
echo $ZERO_OID >.git/HEAD &&
|
|
|
|
|
# avoid corrupt/broken HEAD from interfering with repo discovery
|
|
|
|
|
test_must_fail git -C wt fsck 2>out &&
|
|
|
|
|
grep "main-worktree/HEAD: detached HEAD points" out
|
|
|
|
|
test_i18ngrep "main-worktree/HEAD: detached HEAD points" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'other worktree HEAD link pointing at a funny object' '
|
|
|
|
@ -117,7 +117,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny object' '
|
|
|
|
|
git worktree add other &&
|
|
|
|
|
echo $ZERO_OID >.git/worktrees/other/HEAD &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
grep "worktrees/other/HEAD: detached HEAD points" out
|
|
|
|
|
test_i18ngrep "worktrees/other/HEAD: detached HEAD points" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'other worktree HEAD link pointing at missing object' '
|
|
|
|
@ -125,7 +125,7 @@ test_expect_success 'other worktree HEAD link pointing at missing object' '
|
|
|
|
|
git worktree add other &&
|
|
|
|
|
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
grep "worktrees/other/HEAD: invalid sha1 pointer" out
|
|
|
|
|
test_i18ngrep "worktrees/other/HEAD: invalid sha1 pointer" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'other worktree HEAD link pointing at a funny place' '
|
|
|
|
@ -133,7 +133,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny place' '
|
|
|
|
|
git worktree add other &&
|
|
|
|
|
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
grep "worktrees/other/HEAD points to something strange" out
|
|
|
|
|
test_i18ngrep "worktrees/other/HEAD points to something strange" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'email without @ is okay' '
|
|
|
|
@ -157,7 +157,7 @@ test_expect_success 'email with embedded > is not okay' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in commit $new" out
|
|
|
|
|
test_i18ngrep "error in commit $new" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'missing < email delimiter is reported nicely' '
|
|
|
|
@ -169,7 +169,7 @@ test_expect_success 'missing < email delimiter is reported nicely' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in commit $new.* - bad name" out
|
|
|
|
|
test_i18ngrep "error in commit $new.* - bad name" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'missing email is reported nicely' '
|
|
|
|
@ -181,7 +181,7 @@ test_expect_success 'missing email is reported nicely' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in commit $new.* - missing email" out
|
|
|
|
|
test_i18ngrep "error in commit $new.* - missing email" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success '> in name is reported' '
|
|
|
|
@ -193,7 +193,7 @@ test_expect_success '> in name is reported' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in commit $new" out
|
|
|
|
|
test_i18ngrep "error in commit $new" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
# date is 2^64 + 1
|
|
|
|
@ -207,7 +207,7 @@ test_expect_success 'integer overflow in timestamps is reported' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in commit $new.*integer overflow" out
|
|
|
|
|
test_i18ngrep "error in commit $new.*integer overflow" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'commit with NUL in header' '
|
|
|
|
@ -219,7 +219,7 @@ test_expect_success 'commit with NUL in header' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in commit $new.*unterminated header: NUL at offset" out
|
|
|
|
|
test_i18ngrep "error in commit $new.*unterminated header: NUL at offset" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'tree object with duplicate entries' '
|
|
|
|
@ -240,7 +240,7 @@ test_expect_success 'tree object with duplicate entries' '
|
|
|
|
|
git hash-object -w -t tree --stdin
|
|
|
|
|
) &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
grep "error in tree .*contains duplicate file entries" out
|
|
|
|
|
test_i18ngrep "error in tree .*contains duplicate file entries" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'unparseable tree object' '
|
|
|
|
@ -294,7 +294,7 @@ test_expect_success 'tag pointing to nonexistent' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/tags/invalid" &&
|
|
|
|
|
test_must_fail git fsck --tags >out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "broken link" out
|
|
|
|
|
test_i18ngrep "broken link" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'tag pointing to something else than its type' '
|
|
|
|
@ -336,7 +336,7 @@ test_expect_success 'tag with incorrect tag name & missing tagger' '
|
|
|
|
|
warning in tag $tag: badTagName: invalid '\''tag'\'' name: wrong name format
|
|
|
|
|
warning in tag $tag: missingTaggerEntry: invalid format - expected '\''tagger'\'' line
|
|
|
|
|
EOF
|
|
|
|
|
test_cmp expect out
|
|
|
|
|
test_i18ncmp expect out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'tag with bad tagger' '
|
|
|
|
@ -355,7 +355,7 @@ test_expect_success 'tag with bad tagger' '
|
|
|
|
|
echo $tag >.git/refs/tags/wrong &&
|
|
|
|
|
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
|
|
|
|
test_must_fail git fsck --tags 2>out &&
|
|
|
|
|
grep "error in tag .*: invalid author/committer" out
|
|
|
|
|
test_i18ngrep "error in tag .*: invalid author/committer" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'tag with NUL in header' '
|
|
|
|
@ -375,7 +375,7 @@ test_expect_success 'tag with NUL in header' '
|
|
|
|
|
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
|
|
|
|
test_must_fail git fsck --tags 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "error in tag $tag.*unterminated header: NUL at offset" out
|
|
|
|
|
test_i18ngrep "error in tag $tag.*unterminated header: NUL at offset" out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'cleaned up' '
|
|
|
|
@ -431,7 +431,7 @@ test_expect_success 'fsck notices blob entry pointing to null sha1' '
|
|
|
|
|
git hash-object -w --stdin -t tree) &&
|
|
|
|
|
git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "warning.*null sha1" out
|
|
|
|
|
test_i18ngrep "warning.*null sha1" out
|
|
|
|
|
)
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
@ -442,7 +442,7 @@ test_expect_success 'fsck notices submodule entry pointing to null sha1' '
|
|
|
|
|
git hash-object -w --stdin -t tree) &&
|
|
|
|
|
git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "warning.*null sha1" out
|
|
|
|
|
test_i18ngrep "warning.*null sha1" out
|
|
|
|
|
)
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
@ -463,7 +463,7 @@ while read name path pretty; do
|
|
|
|
|
bad_tree=$(git mktree <bad) &&
|
|
|
|
|
git fsck 2>out &&
|
|
|
|
|
cat out &&
|
|
|
|
|
grep "warning.*tree $bad_tree" out
|
|
|
|
|
test_i18ngrep "warning.*tree $bad_tree" out
|
|
|
|
|
)'
|
|
|
|
|
done <<-\EOF
|
|
|
|
|
100644 blob
|
|
|
|
@ -509,9 +509,9 @@ test_expect_success 'NUL in commit' '
|
|
|
|
|
git branch bad $(cat name) &&
|
|
|
|
|
|
|
|
|
|
test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 &&
|
|
|
|
|
grep nulInCommit warn.1 &&
|
|
|
|
|
test_i18ngrep nulInCommit warn.1 &&
|
|
|
|
|
git fsck 2>warn.2 &&
|
|
|
|
|
grep nulInCommit warn.2
|
|
|
|
|
test_i18ngrep nulInCommit warn.2
|
|
|
|
|
)
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
@ -629,7 +629,7 @@ test_expect_success 'fsck --name-objects' '
|
|
|
|
|
remove_object $(git rev-parse julius:caesar.t) &&
|
|
|
|
|
test_must_fail git fsck --name-objects >out &&
|
|
|
|
|
tree=$(git rev-parse --verify julius:) &&
|
|
|
|
|
egrep "$tree \((refs/heads/master|HEAD)@\{[0-9]*\}:" out
|
|
|
|
|
test_i18ngrep -E "$tree \((refs/heads/master|HEAD)@\{[0-9]*\}:" out
|
|
|
|
|
)
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
@ -640,7 +640,7 @@ test_expect_success 'alternate objects are correctly blamed' '
|
|
|
|
|
mkdir alt.git/objects/12 &&
|
|
|
|
|
>alt.git/objects/12/34567890123456789012345678901234567890 &&
|
|
|
|
|
test_must_fail git fsck >out 2>&1 &&
|
|
|
|
|
grep alt.git out
|
|
|
|
|
test_i18ngrep alt.git out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_expect_success 'fsck errors in packed objects' '
|
|
|
|
@ -659,8 +659,8 @@ test_expect_success 'fsck errors in packed objects' '
|
|
|
|
|
remove_object $one &&
|
|
|
|
|
remove_object $two &&
|
|
|
|
|
test_must_fail git fsck 2>out &&
|
|
|
|
|
grep "error in commit $one.* - bad name" out &&
|
|
|
|
|
grep "error in commit $two.* - bad name" out &&
|
|
|
|
|
test_i18ngrep "error in commit $one.* - bad name" out &&
|
|
|
|
|
test_i18ngrep "error in commit $two.* - bad name" out &&
|
|
|
|
|
! grep corrupt out
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
@ -760,7 +760,7 @@ test_expect_success 'fsck notices dangling objects' '
|
|
|
|
|
git fsck >actual &&
|
|
|
|
|
# the output order is non-deterministic, as it comes from a hash
|
|
|
|
|
sort <actual >actual.sorted &&
|
|
|
|
|
test_cmp expect actual.sorted
|
|
|
|
|
test_i18ncmp expect actual.sorted
|
|
|
|
|
)
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
@ -808,7 +808,7 @@ test_expect_success 'detect corrupt index file in fsck' '
|
|
|
|
|
test_when_finished "mv .git/index.backup .git/index" &&
|
|
|
|
|
corrupt_index_checksum &&
|
|
|
|
|
test_must_fail git fsck --cache 2>errors &&
|
|
|
|
|
grep "bad index file" errors
|
|
|
|
|
test_i18ngrep "bad index file" errors
|
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
test_done
|
|
|
|
|