Merge branch 'jc/spht'
[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 clone . aa &&
14         git checkout b1 &&
15         echo b1 >>file &&
16         git commit -a -m b1 &&
17         git checkout b2 &&
18         echo b2 >>file &&
19         git commit -a -m b2
20 '
21
22 test_expect_success 'prepare pushable branches' '
23         cd aa &&
24         b1=$(git rev-parse origin/b1) &&
25         b2=$(git rev-parse origin/b2) &&
26         git checkout -b b1 origin/b1 &&
27         echo aa-b1 >>file &&
28         git commit -a -m aa-b1 &&
29         git checkout -b b2 origin/b2 &&
30         echo aa-b2 >>file &&
31         git commit -a -m aa-b2 &&
32         git checkout master &&
33         echo aa-master >>file &&
34         git commit -a -m aa-master
35 '
36
37 test_expect_success 'mixed-success push returns error' '! git push'
38
39 test_expect_success 'check tracking branches updated correctly after push' '
40         test "$(git rev-parse origin/master)" = "$(git rev-parse master)"
41 '
42
43 test_expect_success 'check tracking branches not updated for failed refs' '
44         test "$(git rev-parse origin/b1)" = "$b1" &&
45         test "$(git rev-parse origin/b2)" = "$b2"
46 '
47
48 test_expect_success 'deleted branches have their tracking branches removed' '
49         git push origin :b1 &&
50         test "$(git rev-parse origin/b1)" = "origin/b1"
51 '
52
53 test_done