]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t1450-fsck.sh
The sixth batch
[thirdparty/git.git] / t / t1450-fsck.sh
index 91a6e34f38173462d44623ce619b4ec744759e9f..344a2aad82f96d04aec38aa1a221d2649e97d491 100755 (executable)
@@ -257,21 +257,34 @@ test_expect_success 'tree object with duplicate entries' '
        test_i18ngrep "error in tree .*contains duplicate file entries" out
 '
 
-test_expect_success 'tree object with dublicate names' '
-       test_when_finished "remove_object \$blob" &&
-       test_when_finished "remove_object \$tree" &&
-       test_when_finished "remove_object \$badtree" &&
-       blob=$(echo blob | git hash-object -w --stdin) &&
-       printf "100644 blob %s\t%s\n" $blob x.2 >tree &&
-       tree=$(git mktree <tree) &&
-       printf "100644 blob %s\t%s\n" $blob x.1 >badtree &&
-       printf "100644 blob %s\t%s\n" $blob x >>badtree &&
-       printf "040000 tree %s\t%s\n" $tree x >>badtree &&
-       badtree=$(git mktree <badtree) &&
-       test_must_fail git fsck 2>out &&
-       test_i18ngrep "$badtree" out &&
-       test_i18ngrep "error in tree .*contains duplicate file entries" out
-'
+check_duplicate_names () {
+       expect=$1 &&
+       shift &&
+       names=$@ &&
+       test_expect_$expect "tree object with duplicate names: $names" '
+               test_when_finished "remove_object \$blob" &&
+               test_when_finished "remove_object \$tree" &&
+               test_when_finished "remove_object \$badtree" &&
+               blob=$(echo blob | git hash-object -w --stdin) &&
+               printf "100644 blob %s\t%s\n" $blob x.2 >tree &&
+               tree=$(git mktree <tree) &&
+               for name in $names
+               do
+                       case "$name" in
+                       */) printf "040000 tree %s\t%s\n" $tree "${name%/}" ;;
+                       *)  printf "100644 blob %s\t%s\n" $blob "$name" ;;
+                       esac
+               done >badtree &&
+               badtree=$(git mktree <badtree) &&
+               test_must_fail git fsck 2>out &&
+               test_i18ngrep "$badtree" out &&
+               test_i18ngrep "error in tree .*contains duplicate file entries" out
+       '
+}
+
+check_duplicate_names success x x.1 x/
+check_duplicate_names success x x.1.2 x.1/ x/
+check_duplicate_names success x x.1 x.1.2 x/
 
 test_expect_success 'unparseable tree object' '
        test_oid_cache <<-\EOF &&