git submodule: Remove now obsolete tests before cloning a repo

Since 55892d23 "git clone" itself checks that the destination path is not
a file but an empty directory if it exists, so there is no need anymore
for module_clone() to check that too.

Two tests have been added to test the behavior of "git submodule add" when
path is a file or a directory (A subshell had to be added to the former
last test to stay in the right directory).

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jens Lehmann 2010-12-05 00:27:35 +01:00 committed by Junio C Hamano
parent 502dc5b663
commit 69e7236c6d
2 changed files with 23 additions and 19 deletions

View File

@ -93,20 +93,6 @@ module_clone()
url=$2 url=$2
reference="$3" reference="$3"
# If there already is a directory at the submodule path,
# expect it to be empty (since that is the default checkout
# action) and try to remove it.
# Note: if $path is a symlink to a directory the test will
# succeed but the rmdir will fail. We might want to fix this.
if test -d "$path"
then
rmdir "$path" 2>/dev/null ||
die "Directory '$path' exists, but is neither empty nor a git repository"
fi
test -e "$path" &&
die "A file already exist at path '$path'"
if test -n "$reference" if test -n "$reference"
then then
git-clone "$reference" -n "$url" "$path" git-clone "$reference" -n "$url" "$path"

View File

@ -421,11 +421,29 @@ test_expect_success 'add submodules without specifying an explicit path' '
git commit -m "repo commit 1" git commit -m "repo commit 1"
) && ) &&
git clone --bare repo/ bare.git && git clone --bare repo/ bare.git &&
(
cd addtest && cd addtest &&
git submodule add "$submodurl/repo" && git submodule add "$submodurl/repo" &&
git config -f .gitmodules submodule.repo.path repo && git config -f .gitmodules submodule.repo.path repo &&
git submodule add "$submodurl/bare.git" && git submodule add "$submodurl/bare.git" &&
git config -f .gitmodules submodule.bare.path bare git config -f .gitmodules submodule.bare.path bare
)
'
test_expect_success 'add should fail when path is used by a file' '
(
cd addtest &&
touch file &&
test_must_fail git submodule add "$submodurl/repo" file
)
'
test_expect_success 'add should fail when path is used by an existing directory' '
(
cd addtest &&
mkdir empty-dir &&
test_must_fail git submodule add "$submodurl/repo" empty-dir
)
' '
test_done test_done