#!/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