Merge branch 'jk/gc-pre-detach-under-hook'
[git] / t / t5521-pull-options.sh
1 #!/bin/sh
2
3 test_description='pull options'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         mkdir parent &&
9         (cd parent && git init &&
10          echo one >file && git add file &&
11          git commit -m one)
12 '
13
14 test_expect_success 'git pull -q' '
15         mkdir clonedq &&
16         (cd clonedq && git init &&
17         git pull -q "../parent" >out 2>err &&
18         test_must_be_empty err &&
19         test_must_be_empty out)
20 '
21
22 test_expect_success 'git pull -q --rebase' '
23         mkdir clonedqrb &&
24         (cd clonedqrb && git init &&
25         git pull -q --rebase "../parent" >out 2>err &&
26         test_must_be_empty err &&
27         test_must_be_empty out &&
28         git pull -q --rebase "../parent" >out 2>err &&
29         test_must_be_empty err &&
30         test_must_be_empty out)
31 '
32
33 test_expect_success 'git pull' '
34         mkdir cloned &&
35         (cd cloned && git init &&
36         git pull "../parent" >out 2>err &&
37         test -s err &&
38         test_must_be_empty out)
39 '
40
41 test_expect_success 'git pull --rebase' '
42         mkdir clonedrb &&
43         (cd clonedrb && git init &&
44         git pull --rebase "../parent" >out 2>err &&
45         test -s err &&
46         test_must_be_empty out)
47 '
48
49 test_expect_success 'git pull -v' '
50         mkdir clonedv &&
51         (cd clonedv && git init &&
52         git pull -v "../parent" >out 2>err &&
53         test -s err &&
54         test_must_be_empty out)
55 '
56
57 test_expect_success 'git pull -v --rebase' '
58         mkdir clonedvrb &&
59         (cd clonedvrb && git init &&
60         git pull -v --rebase "../parent" >out 2>err &&
61         test -s err &&
62         test_must_be_empty out)
63 '
64
65 test_expect_success 'git pull -v -q' '
66         mkdir clonedvq &&
67         (cd clonedvq && git init &&
68         git pull -v -q "../parent" >out 2>err &&
69         test_must_be_empty out &&
70         test_must_be_empty err)
71 '
72
73 test_expect_success 'git pull -q -v' '
74         mkdir clonedqv &&
75         (cd clonedqv && git init &&
76         git pull -q -v "../parent" >out 2>err &&
77         test_must_be_empty out &&
78         test -s err)
79 '
80
81 test_expect_success 'git pull --force' '
82         mkdir clonedoldstyle &&
83         (cd clonedoldstyle && git init &&
84         cat >>.git/config <<-\EOF &&
85         [remote "one"]
86                 url = ../parent
87                 fetch = refs/heads/master:refs/heads/mirror
88         [remote "two"]
89                 url = ../parent
90                 fetch = refs/heads/master:refs/heads/origin
91         [branch "master"]
92                 remote = two
93                 merge = refs/heads/master
94         EOF
95         git pull two &&
96         test_commit A &&
97         git branch -f origin &&
98         git pull --all --force
99         )
100 '
101
102 test_expect_success 'git pull --all' '
103         mkdir clonedmulti &&
104         (cd clonedmulti && git init &&
105         cat >>.git/config <<-\EOF &&
106         [remote "one"]
107                 url = ../parent
108                 fetch = refs/heads/*:refs/remotes/one/*
109         [remote "two"]
110                 url = ../parent
111                 fetch = refs/heads/*:refs/remotes/two/*
112         [branch "master"]
113                 remote = one
114                 merge = refs/heads/master
115         EOF
116         git pull --all
117         )
118 '
119
120 test_expect_success 'git pull --dry-run' '
121         test_when_finished "rm -rf clonedry" &&
122         git init clonedry &&
123         (
124                 cd clonedry &&
125                 git pull --dry-run ../parent &&
126                 test_path_is_missing .git/FETCH_HEAD &&
127                 test_path_is_missing .git/refs/heads/master &&
128                 test_path_is_missing .git/index &&
129                 test_path_is_missing file
130         )
131 '
132
133 test_expect_success 'git pull --all --dry-run' '
134         test_when_finished "rm -rf cloneddry" &&
135         git init clonedry &&
136         (
137                 cd clonedry &&
138                 git remote add origin ../parent &&
139                 git pull --all --dry-run &&
140                 test_path_is_missing .git/FETCH_HEAD &&
141                 test_path_is_missing .git/refs/remotes/origin/master &&
142                 test_path_is_missing .git/index &&
143                 test_path_is_missing file
144         )
145 '
146
147 test_expect_success 'git pull --allow-unrelated-histories' '
148         test_when_finished "rm -fr src dst" &&
149         git init src &&
150         (
151                 cd src &&
152                 test_commit one &&
153                 test_commit two
154         ) &&
155         git clone src dst &&
156         (
157                 cd src &&
158                 git checkout --orphan side HEAD^ &&
159                 test_commit three
160         ) &&
161         (
162                 cd dst &&
163                 test_must_fail git pull ../src side &&
164                 git pull --allow-unrelated-histories ../src side
165         )
166 '
167
168 test_done