Merge branch 'mm/status-suggest-merge-abort' into maint
[git] / t / t5614-clone-submodules.sh
1 #!/bin/sh
2
3 test_description='Test shallow cloning of repos with submodules'
4
5 . ./test-lib.sh
6
7 pwd=$(pwd)
8
9 test_expect_success 'setup' '
10         git checkout -b master &&
11         test_commit commit1 &&
12         test_commit commit2 &&
13         mkdir sub &&
14         (
15                 cd sub &&
16                 git init &&
17                 test_commit subcommit1 &&
18                 test_commit subcommit2 &&
19                 test_commit subcommit3
20         ) &&
21         git submodule add "file://$pwd/sub" sub &&
22         git commit -m "add submodule"
23 '
24
25 test_expect_success 'nonshallow clone implies nonshallow submodule' '
26         test_when_finished "rm -rf super_clone" &&
27         git clone --recurse-submodules "file://$pwd/." super_clone &&
28         git -C super_clone log --oneline >lines &&
29         test_line_count = 3 lines &&
30         git -C super_clone/sub log --oneline >lines &&
31         test_line_count = 3 lines
32 '
33
34 test_expect_success 'shallow clone with shallow submodule' '
35         test_when_finished "rm -rf super_clone" &&
36         git clone --recurse-submodules --depth 2 --shallow-submodules "file://$pwd/." super_clone &&
37         git -C super_clone log --oneline >lines &&
38         test_line_count = 2 lines &&
39         git -C super_clone/sub log --oneline >lines &&
40         test_line_count = 1 lines
41 '
42
43 test_expect_success 'shallow clone does not imply shallow submodule' '
44         test_when_finished "rm -rf super_clone" &&
45         git clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&
46         git -C super_clone log --oneline >lines &&
47         test_line_count = 2 lines &&
48         git -C super_clone/sub log --oneline >lines &&
49         test_line_count = 3 lines
50 '
51
52 test_expect_success 'shallow clone with non shallow submodule' '
53         test_when_finished "rm -rf super_clone" &&
54         git clone --recurse-submodules --depth 2 --no-shallow-submodules "file://$pwd/." super_clone &&
55         git -C super_clone log --oneline >lines &&
56         test_line_count = 2 lines &&
57         git -C super_clone/sub log --oneline >lines &&
58         test_line_count = 3 lines
59 '
60
61 test_expect_success 'non shallow clone with shallow submodule' '
62         test_when_finished "rm -rf super_clone" &&
63         git clone --recurse-submodules --no-local --shallow-submodules "file://$pwd/." super_clone &&
64         git -C super_clone log --oneline >lines &&
65         test_line_count = 3 lines &&
66         git -C super_clone/sub log --oneline >lines &&
67         test_line_count = 1 lines
68 '
69
70 test_done