Skip to content

Commit

Permalink
t1450: refactor ".", "..", and ".git" fsck tests
Browse files Browse the repository at this point in the history
We check that fsck notices and complains about confusing
paths in trees. However, there are a few shortcomings:

  1. We check only for these paths as file entries, not as
     intermediate paths (so ".git" and not ".git/foo").

  2. We check "." and ".." together, so it is possible that
     we notice only one and not the other.

  3. We repeat a lot of boilerplate.

Let's use some loops to be more thorough in our testing, and
still end up with shorter code.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Dec 17, 2014
1 parent cc2fc7c commit 450870c
Showing 1 changed file with 27 additions and 30 deletions.
57 changes: 27 additions & 30 deletions t/t1450-fsck.sh
Original file line number Diff line number Diff line change
Expand Up @@ -237,35 +237,32 @@ test_expect_success 'fsck notices submodule entry pointing to null sha1' '
)
'

test_expect_success 'fsck notices "." and ".." in trees' '
(
git init dots &&
cd dots &&
blob=$(echo foo | git hash-object -w --stdin) &&
tab=$(printf "\\t") &&
git mktree <<-EOF &&
100644 blob $blob$tab.
100644 blob $blob$tab..
EOF
git fsck 2>out &&
cat out &&
grep "warning.*\\." out
)
'

test_expect_success 'fsck notices ".git" in trees' '
(
git init dotgit &&
cd dotgit &&
blob=$(echo foo | git hash-object -w --stdin) &&
tab=$(printf "\\t") &&
git mktree <<-EOF &&
100644 blob $blob$tab.git
EOF
git fsck 2>out &&
cat out &&
grep "warning.*\\.git" out
)
'
while read name path; do
while read mode type; do
test_expect_success "fsck notices $path as $type" '
(
git init $name-$type &&
cd $name-$type &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
git mktree <bad &&
git fsck 2>out &&
cat out &&
grep "warning.*\\." out
)'
done <<-\EOF
100644 blob
040000 tree
EOF
done <<-\EOF
dot .
dotdot ..
dotgit .git
EOF

test_done

0 comments on commit 450870c

Please sign in to comment.