Merge branch 'jc/doc-commit-only'
[git] / t / t5600-clone-fail-cleanup.sh
1 #!/bin/sh
2 #
3 # Copyright (C) 2006 Carl D. Worth <cworth@cworth.org>
4 #
5
6 test_description='test git clone to cleanup after failure
7
8 This test covers the fact that if git clone fails, it should remove
9 the directory it created, to avoid the user having to manually
10 remove the directory before attempting a clone again.'
11
12 . ./test-lib.sh
13
14 test_expect_success \
15     'clone of non-existent source should fail' \
16     'test_must_fail git clone foo bar'
17
18 test_expect_success \
19     'failed clone should not leave a directory' \
20     '! test -d bar'
21
22 # Need a repo to clone
23 test_create_repo foo
24
25 # clone doesn't like it if there is no HEAD. Is that a bug?
26 (cd foo && touch file && git add file && git commit -m 'add file' >/dev/null 2>&1)
27
28 # source repository given to git clone should be relative to the
29 # current path not to the target dir
30 test_expect_success \
31     'clone of non-existent (relative to $PWD) source should fail' \
32     'test_must_fail git clone ../foo baz'
33
34 test_expect_success \
35     'clone should work now that source exists' \
36     'git clone foo bar'
37
38 test_expect_success \
39     'successful clone must leave the directory' \
40     'test -d bar'
41
42 test_expect_success 'failed clone --separate-git-dir should not leave any directories' '
43         mkdir foo/.git/objects.bak/ &&
44         mv foo/.git/objects/* foo/.git/objects.bak/ &&
45         test_must_fail git clone --separate-git-dir gitdir foo worktree &&
46         test_must_fail test -e gitdir &&
47         test_must_fail test -e worktree &&
48         mv foo/.git/objects.bak/* foo/.git/objects/ &&
49         rmdir foo/.git/objects.bak
50 '
51
52 test_done