Merge branch 'rj/compat-regex-size-max-fix' 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         (
29                 cd super_clone &&
30                 git log --oneline >lines &&
31                 test_line_count = 3 lines
32         ) &&
33         (
34                 cd super_clone/sub &&
35                 git log --oneline >lines &&
36                 test_line_count = 3 lines
37         )
38 '
39
40 test_expect_success 'shallow clone implies shallow submodule' '
41         test_when_finished "rm -rf super_clone" &&
42         git clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&
43         (
44                 cd super_clone &&
45                 git log --oneline >lines &&
46                 test_line_count = 2 lines
47         ) &&
48         (
49                 cd super_clone/sub &&
50                 git log --oneline >lines &&
51                 test_line_count = 1 lines
52         )
53 '
54
55 test_expect_success 'shallow clone with non shallow submodule' '
56         test_when_finished "rm -rf super_clone" &&
57         git clone --recurse-submodules --depth 2 --no-shallow-submodules "file://$pwd/." super_clone &&
58         (
59                 cd super_clone &&
60                 git log --oneline >lines &&
61                 test_line_count = 2 lines
62         ) &&
63         (
64                 cd super_clone/sub &&
65                 git log --oneline >lines &&
66                 test_line_count = 3 lines
67         )
68 '
69
70 test_expect_success 'non shallow clone with shallow submodule' '
71         test_when_finished "rm -rf super_clone" &&
72         git clone --recurse-submodules --no-local --shallow-submodules "file://$pwd/." super_clone &&
73         (
74                 cd super_clone &&
75                 git log --oneline >lines &&
76                 test_line_count = 3 lines
77         ) &&
78         (
79                 cd super_clone/sub &&
80                 git log --oneline >lines &&
81                 test_line_count = 1 lines
82         )
83 '
84
85 test_done