
Back when this test was written, git-clone could not handle a repository without any commits. These days it works fine, and this comment is out of date. At first glance it seems like we could just drop this code entirely now, but it's necessary for the final test, which was added later. That test corrupts the repository by temporarily removing its objects, which means we need to have some objects to move. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
53 lines
1.5 KiB
Bash
Executable File
53 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (C) 2006 Carl D. Worth <cworth@cworth.org>
|
|
#
|
|
|
|
test_description='test git clone to cleanup after failure
|
|
|
|
This test covers the fact that if git clone fails, it should remove
|
|
the directory it created, to avoid the user having to manually
|
|
remove the directory before attempting a clone again.'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success \
|
|
'clone of non-existent source should fail' \
|
|
'test_must_fail git clone foo bar'
|
|
|
|
test_expect_success \
|
|
'failed clone should not leave a directory' \
|
|
'! test -d bar'
|
|
|
|
# Need a repo to clone
|
|
test_create_repo foo
|
|
|
|
# create some objects so that we can corrupt the repo later
|
|
(cd foo && touch file && git add file && git commit -m 'add file' >/dev/null 2>&1)
|
|
|
|
# source repository given to git clone should be relative to the
|
|
# current path not to the target dir
|
|
test_expect_success \
|
|
'clone of non-existent (relative to $PWD) source should fail' \
|
|
'test_must_fail git clone ../foo baz'
|
|
|
|
test_expect_success \
|
|
'clone should work now that source exists' \
|
|
'git clone foo bar'
|
|
|
|
test_expect_success \
|
|
'successful clone must leave the directory' \
|
|
'test -d bar'
|
|
|
|
test_expect_success 'failed clone --separate-git-dir should not leave any directories' '
|
|
mkdir foo/.git/objects.bak/ &&
|
|
mv foo/.git/objects/* foo/.git/objects.bak/ &&
|
|
test_must_fail git clone --separate-git-dir gitdir foo worktree &&
|
|
test_must_fail test -e gitdir &&
|
|
test_must_fail test -e worktree &&
|
|
mv foo/.git/objects.bak/* foo/.git/objects/ &&
|
|
rmdir foo/.git/objects.bak
|
|
'
|
|
|
|
test_done
|