5abdc13bd3fde45e59e917f36c917f018a4f747a
   1#!/bin/sh
   2
   3test_description='test <branch>@{upstream} syntax'
   4
   5. ./test-lib.sh
   6
   7
   8test_expect_success 'setup' '
   9
  10        test_commit 1 &&
  11        git checkout -b side &&
  12        test_commit 2 &&
  13        git checkout master &&
  14        git clone . clone &&
  15        test_commit 3 &&
  16        (cd clone &&
  17         test_commit 4 &&
  18         git branch --track my-side origin/side)
  19
  20'
  21
  22full_name () {
  23        (cd clone &&
  24         git rev-parse --symbolic-full-name "$@")
  25}
  26
  27commit_subject () {
  28        (cd clone &&
  29         git show -s --pretty=format:%s "$@")
  30}
  31
  32test_expect_success '@{upstream} resolves to correct full name' '
  33        test refs/remotes/origin/master = "$(full_name @{upstream})"
  34'
  35
  36test_expect_success '@{u} resolves to correct full name' '
  37        test refs/remotes/origin/master = "$(full_name @{u})"
  38'
  39
  40test_expect_success 'my-side@{upstream} resolves to correct full name' '
  41        test refs/remotes/origin/side = "$(full_name my-side@{u})"
  42'
  43
  44test_expect_success 'my-side@{u} resolves to correct commit' '
  45        git checkout side &&
  46        test_commit 5 &&
  47        (cd clone && git fetch) &&
  48        test 2 = "$(commit_subject my-side)" &&
  49        test 5 = "$(commit_subject my-side@{u})"
  50'
  51
  52test_expect_success 'not-tracking@{u} fails' '
  53        test_must_fail full_name non-tracking@{u} &&
  54        (cd clone && git checkout --no-track -b non-tracking) &&
  55        test_must_fail full_name non-tracking@{u}
  56'
  57
  58test_expect_success '<branch>@{u}@{1} resolves correctly' '
  59        test_commit 6 &&
  60        (cd clone && git fetch) &&
  61        test 5 = $(commit_subject my-side@{u}@{1})
  62'
  63
  64test_expect_success '@{u} without specifying branch fails on a detached HEAD' '
  65        git checkout HEAD^0 &&
  66        test_must_fail git rev-parse @{u}
  67'
  68
  69test_done