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 branch -u master old-branch &&
35 git branch -u upstream-branch new-branch
36'
37
38check HEAD new-two
39check "@{1}" new-one
40check "@{-1}" old-two
41check "@{-1}@{1}" old-one
42check "@{u}" upstream-two
43check "@{u}@{1}" upstream-one
44check "@{-1}@{u}" master-two
45check "@{-1}@{u}@{1}" master-one
46nonsense "@{u}@{-1}"
47nonsense "@{1}@{u}"
48
49test_done