git-am.sh: fix initialization of the threeway variable
[gitweb.git] / t / t6040-tracking-info.sh
index 6f678a4dc27f2983d8613411c3de00068370ddd6..3d5c238c8150c13b1244f8c4208856714265245a 100755 (executable)
@@ -12,10 +12,9 @@ advance () {
 }
 
 test_expect_success setup '
-       for i in a b c;
-       do
-               advance $i || break
-       done &&
+       advance a &&
+       advance b &&
+       advance c &&
        git clone . test &&
        (
                cd test &&
@@ -32,18 +31,21 @@ test_expect_success setup '
                git checkout -b brokenbase origin &&
                git checkout -b b5 --track brokenbase &&
                advance g &&
-               git branch -d brokenbase
+               git branch -d brokenbase &&
+               git checkout -b b6 origin
        ) &&
        git checkout -b follower --track master &&
        advance h
 '
 
-script='s/^..\(b.\)[    0-9a-f]*\[\([^]]*\)\].*/\1 \2/p'
+script='s/^..\(b.\) *[0-9a-f]* \(.*\)$/\1 \2/p'
 cat >expect <<\EOF
-b1 ahead 1, behind 1
-b2 ahead 1, behind 1
-b3 behind 1
-b4 ahead 2
+b1 [ahead 1, behind 1] d
+b2 [ahead 1, behind 1] d
+b3 [behind 1] b
+b4 [ahead 2] f
+b5 g
+b6 c
 EOF
 
 test_expect_success 'branch -v' '
@@ -56,11 +58,12 @@ test_expect_success 'branch -v' '
 '
 
 cat >expect <<\EOF
-b1 origin/master: ahead 1, behind 1
-b2 origin/master: ahead 1, behind 1
-b3 origin/master: behind 1
-b4 origin/master: ahead 2
-b5 brokenbase: gone
+b1 [origin/master: ahead 1, behind 1] d
+b2 [origin/master: ahead 1, behind 1] d
+b3 [origin/master: behind 1] b
+b4 [origin/master: ahead 2] f
+b5 [brokenbase: gone] g
+b6 [origin/master] c
 EOF
 
 test_expect_success 'branch -vv' '
@@ -93,6 +96,13 @@ test_expect_success 'checkout (upstream is gone)' '
        test_i18ngrep "is based on .*, but the upstream is gone." actual
 '
 
+test_expect_success 'checkout (up-to-date with upstream)' '
+       (
+               cd test && git checkout b6
+       ) >actual &&
+       test_i18ngrep "Your branch is up-to-date with .origin/master" actual
+'
+
 test_expect_success 'status (diverged from upstream)' '
        (
                cd test &&
@@ -113,6 +123,16 @@ test_expect_success 'status (upstream is gone)' '
        test_i18ngrep "is based on .*, but the upstream is gone." actual
 '
 
+test_expect_success 'status (up-to-date with upstream)' '
+       (
+               cd test &&
+               git checkout b6 >/dev/null &&
+               # reports nothing to commit
+               test_must_fail git commit --dry-run
+       ) >actual &&
+       test_i18ngrep "Your branch is up-to-date with .origin/master" actual
+'
+
 cat >expect <<\EOF
 ## b1...origin/master [ahead 1, behind 1]
 EOF
@@ -139,6 +159,19 @@ test_expect_success 'status -s -b (upstream is gone)' '
        test_i18ncmp expect actual
 '
 
+cat >expect <<\EOF
+## b6...origin/master
+EOF
+
+test_expect_success 'status -s -b (up-to-date with upstream)' '
+       (
+               cd test &&
+               git checkout b6 >/dev/null &&
+               git status -s -b | head -1
+       ) >actual &&
+       test_i18ncmp expect actual
+'
+
 test_expect_success 'fail to track lightweight tags' '
        git checkout master &&
        git tag light &&