summaryrefslogtreecommitdiff
path: root/t/t5815-submodule-protos.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-09-28 21:33:27 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-09-28 21:33:27 (GMT)
commitdf37727a65c87cf9bba35befca1255031649553f (patch)
tree1b94b1eff66ebbc258722f59b60ca64eac0c6de3 /t/t5815-submodule-protos.sh
parentecad27cf98c391d5cfdc26ce0e442e02347baad0 (diff)
parent33cfccbbf35a56e190b79bdec5c85457c952a021 (diff)
downloadgit-df37727a65c87cf9bba35befca1255031649553f.zip
git-df37727a65c87cf9bba35befca1255031649553f.tar.gz
git-df37727a65c87cf9bba35befca1255031649553f.tar.bz2
Merge branch 'jk/transfer-limit-protocol' into maint-2.3
Diffstat (limited to 't/t5815-submodule-protos.sh')
-rwxr-xr-xt/t5815-submodule-protos.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/t/t5815-submodule-protos.sh b/t/t5815-submodule-protos.sh
new file mode 100755
index 0000000..06f55a1
--- /dev/null
+++ b/t/t5815-submodule-protos.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+test_description='test protocol whitelisting with submodules'
+. ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-proto-disable.sh
+
+setup_ext_wrapper
+setup_ssh_wrapper
+
+test_expect_success 'setup repository with submodules' '
+ mkdir remote &&
+ git init remote/repo.git &&
+ (cd remote/repo.git && test_commit one) &&
+ # submodule-add should probably trust what we feed it on the cmdline,
+ # but its implementation is overly conservative.
+ GIT_ALLOW_PROTOCOL=ssh git submodule add remote:repo.git ssh-module &&
+ GIT_ALLOW_PROTOCOL=ext git submodule add "ext::fake-remote %S repo.git" ext-module &&
+ git commit -m "add submodules"
+'
+
+test_expect_success 'clone with recurse-submodules fails' '
+ test_must_fail git clone --recurse-submodules . dst
+'
+
+test_expect_success 'setup individual updates' '
+ rm -rf dst &&
+ git clone . dst &&
+ git -C dst submodule init
+'
+
+test_expect_success 'update of ssh allowed' '
+ git -C dst submodule update ssh-module
+'
+
+test_expect_success 'update of ext not allowed' '
+ test_must_fail git -C dst submodule update ext-module
+'
+
+test_expect_success 'user can override whitelist' '
+ GIT_ALLOW_PROTOCOL=ext git -C dst submodule update ext-module
+'
+
+test_done