From: Jon Seymour Date: Sun, 27 May 2012 15:34:04 GMT Subject: [PATCH v7 2/9] submodule: document failure to detect invalid submodule URLs Message-ID: <1338132851-23497-3-git-send-email-jon.seymour@gmail.com> In-Reply-To: <1338132851-23497-1-git-send-email-jon.seymour@gmail.com> These tests document failures to detect submodule URLs that backtrack past the 'invariant' part of a superproject's origin URL. For example: if the origin URL is ssh://hostname/repo, then currently if a submodule URL is specified as ../../subrepo, then git will construct a submodule url of the form ssh://subrepo/ without complaint. Signed-off-by: Jon Seymour --- t/t7400-submodule-basic.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 9428c7a..a758c63 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -543,10 +543,80 @@ test_expect_success '../subrepo works with helper URL- helper:://hostname/repo' ) ' +test_expect_failure '../../subrepo fails with URL - ssh://hostname/repo' " + ( + cd reltest && + cp pristine-.git-config .git/config && + cp pristine-.gitmodules .gitmodules && + git config remote.origin.url ssh://hostname/repo && + git config -f .gitmodules submodule.sub.url ../../subrepo && + echo cannot strip one component off url \'ssh://hostname/\' > expected && + test_must_fail git submodule init 2>actual && + #actual no failure, url configured as ssh://subrepo + test_cmp expected actual + ) +" + +test_expect_failure '../../subrepo fails with absolute local path - /repo' " + ( + cd reltest && + cp pristine-.git-config .git/config && + cp pristine-.gitmodules .gitmodules && + git config remote.origin.url /repo && + git config -f .gitmodules submodule.sub.url ../../subrepo && + echo cannot strip one component off url \'/\' > expected && + test_must_fail git submodule init 2>actual && + test_cmp expected actual + ) +" + +test_expect_failure '../../../subrepo fails with URL - ssh://hostname/repo' " + ( + cd reltest && + cp pristine-.git-config .git/config && + cp pristine-.gitmodules .gitmodules && + git config remote.origin.url ssh://hostname/repo && + git config -f .gitmodules submodule.sub.url ../../../subrepo && + echo cannot strip one component off url \'ssh://hostname/\' > expected && + test_must_fail git submodule init 2>actual && + #actual no failure, url configured as ssh:/subrepo + test_cmp expected actual + ) +" + +test_expect_failure '../../../../subrepo fails with with URL - ssh://hostname/repo' " + ( + cd reltest && + cp pristine-.git-config .git/config && + cp pristine-.gitmodules .gitmodules && + git config remote.origin.url ssh://hostname/repo && + git config -f .gitmodules submodule.sub.url ../../../../subrepo && + echo cannot strip one component off url \'ssh://hostname/\' > expected && + test_must_fail git submodule init 2>actual && + #actual no failure, url configured as ssh:/subrepo + test_cmp expected actual + ) +" + +test_expect_failure '../../../../../subrepo fails with URL - ssh://hostname/repo' " + ( + cd reltest && + cp pristine-.git-config .git/config && + cp pristine-.gitmodules .gitmodules && + git config remote.origin.url ssh://hostname/repo && + git config -f .gitmodules submodule.sub.url ../../../../../subrepo && + echo cannot strip one component off url \'ssh://hostname/\' > expected && + test_must_fail git submodule init 2>actual && + #actual cannot strip one component off url 'ssh' + test_cmp expected actual + ) +" + test_expect_success '../subrepo works with scp-style URL - user@host:repo' ' ( cd reltest && cp pristine-.git-config .git/config && + cp pristine-.gitmodules .gitmodules && git config remote.origin.url user@host:repo && git submodule init && test "$(git config submodule.sub.url)" = user@host:subrepo -- 1.7.10.2.656.g24a6219