aboutsummaryrefslogtreecommitdiffstats
path: root/t/t7400-submodule-basic.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t7400-submodule-basic.sh')
-rwxr-xr-xt/t7400-submodule-basic.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index d6a501d453..e6b551daad 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -407,6 +407,31 @@ test_expect_success 'submodule add in subdirectory with relative path should fai
test_grep toplevel output.err
'
+test_expect_success 'submodule add of a different algorithm fails' '
+ git init --object-format=sha256 sha256 &&
+ (
+ cd sha256 &&
+ test_commit abc &&
+ git init --object-format=sha1 submodule &&
+ test_commit -C submodule def &&
+ test_must_fail git submodule add "$submodurl" submodule 2>err &&
+ test_grep "cannot add a submodule of a different hash algorithm" err &&
+ git ls-files --stage >entries &&
+ test_grep ! ^160000 entries
+ ) &&
+ git init --object-format=sha1 sha1 &&
+ (
+ cd sha1 &&
+ test_commit abc &&
+ git init --object-format=sha256 submodule &&
+ test_commit -C submodule def &&
+ test_must_fail git submodule add "$submodurl" submodule 2>err &&
+ test_grep "cannot add a submodule of a different hash algorithm" err &&
+ git ls-files --stage >entries &&
+ test_grep ! ^160000 entries
+ )
+'
+
test_expect_success 'setup - add an example entry to .gitmodules' '
git config --file=.gitmodules submodule.example.url git://example.com/init.git
'
@@ -1482,4 +1507,27 @@ test_expect_success '`submodule init` and `init.templateDir`' '
)
'
+test_expect_success 'submodule add fails when name is reused' '
+ git init test-submodule &&
+ (
+ cd test-submodule &&
+ git commit --allow-empty -m init &&
+
+ git init ../child-origin &&
+ git -C ../child-origin commit --allow-empty -m init &&
+
+ git submodule add ../child-origin child &&
+ git commit -m "Add submodule child" &&
+
+ git mv child child_old &&
+ git commit -m "Move child to child_old" &&
+
+ # Now adding a *new* repo at the old name must fail
+ git init ../child2-origin &&
+ git -C ../child2-origin commit --allow-empty -m init &&
+ test_must_fail git submodule add ../child2-origin child 2>err &&
+ test_grep "already used for" err
+ )
+'
+
test_done