Merge branch 'at/rebase-fork-point-regression-fix'
[git] / t / t5404-tracking-branches.sh
1 #!/bin/sh
2
3 test_description='tracking branch update checks for git push'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         echo 1 >file &&
9         git add file &&
10         git commit -m 1 &&
11         git branch b1 &&
12         git branch b2 &&
13         git branch b3 &&
14         git clone . aa &&
15         git checkout b1 &&
16         echo b1 >>file &&
17         git commit -a -m b1 &&
18         git checkout b2 &&
19         echo b2 >>file &&
20         git commit -a -m b2
21 '
22
23 test_expect_success 'prepare pushable branches' '
24         cd aa &&
25         b1=$(git rev-parse origin/b1) &&
26         b2=$(git rev-parse origin/b2) &&
27         git checkout -b b1 origin/b1 &&
28         echo aa-b1 >>file &&
29         git commit -a -m aa-b1 &&
30         git checkout -b b2 origin/b2 &&
31         echo aa-b2 >>file &&
32         git commit -a -m aa-b2 &&
33         git checkout master &&
34         echo aa-master >>file &&
35         git commit -a -m aa-master
36 '
37
38 test_expect_success 'mixed-success push returns error' '
39         test_must_fail git push origin :
40 '
41
42 test_expect_success 'check tracking branches updated correctly after push' '
43         test "$(git rev-parse origin/master)" = "$(git rev-parse master)"
44 '
45
46 test_expect_success 'check tracking branches not updated for failed refs' '
47         test "$(git rev-parse origin/b1)" = "$b1" &&
48         test "$(git rev-parse origin/b2)" = "$b2"
49 '
50
51 test_expect_success 'deleted branches have their tracking branches removed' '
52         git push origin :b1 &&
53         test "$(git rev-parse origin/b1)" = "origin/b1"
54 '
55
56 test_expect_success 'already deleted tracking branches ignored' '
57         git branch -d -r origin/b3 &&
58         git push origin :b3 >output 2>&1 &&
59         ! grep "^error: " output
60 '
61
62 test_done