1#!/bin/sh
2
3test_description='test various @{X} syntax combinations together'
4. ./test-lib.sh
5
6check() {
7test_expect_${3:-success} "$1 = $2" "
8 echo '$2' >expect &&
9 git log -1 --format=%s '$1' >actual &&
10 test_cmp expect actual
11"
12}
13nonsense() {
14test_expect_${2:-success} "$1 is nonsensical" "
15 test_must_fail git log -1 '$1'
16"
17}
18fail() {
19 "$@" failure
20}
21
22test_expect_success 'setup' '
23 test_commit master-one &&
24 test_commit master-two &&
25 git checkout -b upstream-branch &&
26 test_commit upstream-one &&
27 test_commit upstream-two &&
28 git checkout -b old-branch &&
29 test_commit old-one &&
30 test_commit old-two &&
31 git checkout -b new-branch &&
32 test_commit new-one &&
33 test_commit new-two &&
34 git config branch.old-branch.remote . &&
35 git config branch.old-branch.merge refs/heads/master &&
36 git config branch.new-branch.remote . &&
37 git config branch.new-branch.merge refs/heads/upstream-branch
38'
39
40check HEAD new-two
41check "@{1}" new-one
42check "@{-1}" old-two
43check "@{-1}@{1}" old-one
44check "@{u}" upstream-two
45check "@{u}@{1}" upstream-one
46check "@{-1}@{u}" master-two
47check "@{-1}@{u}@{1}" master-one
48nonsense "@{u}@{-1}"
49nonsense "@{1}@{u}"
50
51test_done