@@ -26,15 +26,15 @@ check_pushed_commit () {
26
26
# $2 = expected target branch for the push
27
27
# $3 = [optional] repo to check for actual output (repo1 by default)
28
28
test_push_success () {
29
- git -c push.default=" $1 " push &&
29
+ git ${1 : + -c push.default=" $1 " } push &&
30
30
check_pushed_commit HEAD " $2 " " $3 "
31
31
}
32
32
33
33
# $1 = push.default value
34
34
# check that push fails and does not modify any remote branch
35
35
test_push_failure () {
36
36
git --git-dir=repo1 log --no-walk --format=' %h %s' --all > expect &&
37
- test_must_fail git -c push.default=" $1 " push &&
37
+ test_must_fail git ${1 : + -c push.default=" $1 " } push &&
38
38
git --git-dir=repo1 log --no-walk --format=' %h %s' --all > actual &&
39
39
test_cmp expect actual
40
40
}
@@ -172,4 +172,32 @@ test_pushdefault_workflow success simple master triangular
172
172
# master is updated (parent2 does not have foo)
173
173
test_pushdefault_workflow success matching master triangular
174
174
175
+ # default tests, when no push-default is specified. This
176
+ # should behave the same as "simple" in non-triangular
177
+ # settings, and as "current" otherwise.
178
+
179
+ test_expect_success ' default behavior allows "simple" push' '
180
+ test_config branch.master.remote parent1 &&
181
+ test_config branch.master.merge refs/heads/master &&
182
+ test_config remote.pushdefault parent1 &&
183
+ test_commit default-master-master &&
184
+ test_push_success "" master
185
+ '
186
+
187
+ test_expect_success ' default behavior rejects non-simple push' '
188
+ test_config branch.master.remote parent1 &&
189
+ test_config branch.master.merge refs/heads/foo &&
190
+ test_config remote.pushdefault parent1 &&
191
+ test_commit default-master-foo &&
192
+ test_push_failure ""
193
+ '
194
+
195
+ test_expect_success ' default triangular behavior acts like "current"' '
196
+ test_config branch.master.remote parent1 &&
197
+ test_config branch.master.merge refs/heads/foo &&
198
+ test_config remote.pushdefault parent2 &&
199
+ test_commit default-triangular &&
200
+ test_push_success "" master repo2
201
+ '
202
+
175
203
test_done
0 commit comments