aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-11-24 13:40:11 -0500
committerJunio C Hamano <gitster@pobox.com>2014-12-17 11:04:39 -0800
commit450870cba7a9bac94b5527021800bd8bf037c99c (patch)
tree2e93b3afe16118e538d6aedaa717d999f487d04a
parentcc2fc7c2f07c4a2aba5a653137ac9b489e05df43 (diff)
downloadgit-450870cba7a9bac94b5527021800bd8bf037c99c.tar.gz
git-450870cba7a9bac94b5527021800bd8bf037c99c.tar.xz
t1450: refactor ".", "..", and ".git" fsck tests
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>
-rwxr-xr-xt/t1450-fsck.sh57
1 files changed, 27 insertions, 30 deletions
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index d730734fd..4d8a4fe3c 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -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