Merge branch 'jn/gitweb-return-or-exit-cleanup'
[gitweb.git] / t / t5404-tracking-branches.sh
index 20718d4679f7206d5e039142e4f549f87935fd4b..c24003565d635722f07333bb662c8e102d577c9e 100755 (executable)
@@ -10,6 +10,7 @@ test_expect_success 'setup' '
        git commit -m 1 &&
        git branch b1 &&
        git branch b2 &&
+       git branch b3 &&
        git clone . aa &&
        git checkout b1 &&
        echo b1 >>file &&
@@ -19,7 +20,7 @@ test_expect_success 'setup' '
        git commit -a -m b2
 '
 
-test_expect_success 'check tracking branches updated correctly after push' '
+test_expect_success 'prepare pushable branches' '
        cd aa &&
        b1=$(git rev-parse origin/b1) &&
        b2=$(git rev-parse origin/b2) &&
@@ -31,10 +32,31 @@ test_expect_success 'check tracking branches updated correctly after push' '
        git commit -a -m aa-b2 &&
        git checkout master &&
        echo aa-master >>file &&
-       git commit -a -m aa-master &&
-       git push &&
+       git commit -a -m aa-master
+'
+
+test_expect_success 'mixed-success push returns error' '
+       test_must_fail git push
+'
+
+test_expect_success 'check tracking branches updated correctly after push' '
+       test "$(git rev-parse origin/master)" = "$(git rev-parse master)"
+'
+
+test_expect_success 'check tracking branches not updated for failed refs' '
        test "$(git rev-parse origin/b1)" = "$b1" &&
        test "$(git rev-parse origin/b2)" = "$b2"
 '
 
+test_expect_success 'deleted branches have their tracking branches removed' '
+       git push origin :b1 &&
+       test "$(git rev-parse origin/b1)" = "origin/b1"
+'
+
+test_expect_success 'already deleted tracking branches ignored' '
+       git branch -d -r origin/b3 &&
+       git push origin :b3 >output 2>&1 &&
+       ! grep error output
+'
+
 test_done