]>
Commit | Line | Data |
---|---|---|
42cab601 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='test various @{X} syntax combinations together' | |
4 | . ./test-lib.sh | |
5 | ||
6 | check() { | |
c8a81e90 FC |
7 | test_expect_${4:-success} "$1 = $3" " |
8 | echo '$3' >expect && | |
9 | if test '$2' = 'commit' | |
10 | then | |
11 | git log -1 --format=%s '$1' >actual | |
8cd4249c JK |
12 | elif test '$2' = 'ref' |
13 | then | |
c8a81e90 | 14 | git rev-parse --symbolic-full-name '$1' >actual |
8cd4249c JK |
15 | else |
16 | git cat-file -p '$1' >actual | |
c8a81e90 FC |
17 | fi && |
18 | test_cmp expect actual | |
19 | " | |
42cab601 | 20 | } |
c8a81e90 | 21 | |
42cab601 | 22 | nonsense() { |
c8a81e90 | 23 | test_expect_${2:-success} "$1 is nonsensical" " |
89d5dd4e | 24 | test_must_fail git rev-parse --verify '$1' |
c8a81e90 | 25 | " |
42cab601 | 26 | } |
c8a81e90 | 27 | |
42cab601 JK |
28 | fail() { |
29 | "$@" failure | |
30 | } | |
31 | ||
32 | test_expect_success 'setup' ' | |
33 | test_commit master-one && | |
34 | test_commit master-two && | |
35 | git checkout -b upstream-branch && | |
36 | test_commit upstream-one && | |
37 | test_commit upstream-two && | |
8facec08 JS |
38 | if test_have_prereq !MINGW |
39 | then | |
40 | git checkout -b @/at-test | |
41 | fi && | |
9ba89f48 FC |
42 | git checkout -b @@/at-test && |
43 | git checkout -b @at-test && | |
42cab601 JK |
44 | git checkout -b old-branch && |
45 | test_commit old-one && | |
46 | test_commit old-two && | |
47 | git checkout -b new-branch && | |
48 | test_commit new-one && | |
49 | test_commit new-two && | |
1bc6d022 FC |
50 | git branch -u master old-branch && |
51 | git branch -u upstream-branch new-branch | |
42cab601 JK |
52 | ' |
53 | ||
c8a81e90 FC |
54 | check HEAD ref refs/heads/new-branch |
55 | check "@{1}" commit new-one | |
f58dc19e RR |
56 | check "HEAD@{1}" commit new-one |
57 | check "@{now}" commit new-two | |
58 | check "HEAD@{now}" commit new-two | |
c8a81e90 | 59 | check "@{-1}" ref refs/heads/old-branch |
f58dc19e | 60 | check "@{-1}@{0}" commit old-two |
c8a81e90 FC |
61 | check "@{-1}@{1}" commit old-one |
62 | check "@{u}" ref refs/heads/upstream-branch | |
f58dc19e | 63 | check "HEAD@{u}" ref refs/heads/upstream-branch |
c8a81e90 FC |
64 | check "@{u}@{1}" commit upstream-one |
65 | check "@{-1}@{u}" ref refs/heads/master | |
66 | check "@{-1}@{u}@{1}" commit master-one | |
9ba89f48 FC |
67 | check "@" commit new-two |
68 | check "@@{u}" ref refs/heads/upstream-branch | |
69 | check "@@/at-test" ref refs/heads/@@/at-test | |
8facec08 | 70 | test_have_prereq MINGW || |
9ba89f48 FC |
71 | check "@/at-test" ref refs/heads/@/at-test |
72 | check "@at-test" ref refs/heads/@at-test | |
12a258c0 | 73 | nonsense "@{u}@{-1}" |
f58dc19e | 74 | nonsense "@{0}@{0}" |
42cab601 | 75 | nonsense "@{1}@{u}" |
f58dc19e RR |
76 | nonsense "HEAD@{-1}" |
77 | nonsense "@{-1}@{-1}" | |
42cab601 | 78 | |
723b74ee RR |
79 | # @{N} versus HEAD@{N} |
80 | ||
81 | check "HEAD@{3}" commit old-two | |
82 | nonsense "@{3}" | |
83 | ||
84 | test_expect_success 'switch to old-branch' ' | |
85 | git checkout old-branch | |
86 | ' | |
87 | ||
88 | check HEAD ref refs/heads/old-branch | |
89 | check "HEAD@{1}" commit new-two | |
90 | check "@{1}" commit old-one | |
91 | ||
8cd4249c JK |
92 | test_expect_success 'create path with @' ' |
93 | echo content >normal && | |
94 | echo content >fun@ny && | |
95 | git add normal fun@ny && | |
96 | git commit -m "funny path" | |
97 | ' | |
98 | ||
99 | check "@:normal" blob content | |
100 | check "@:fun@ny" blob content | |
101 | ||
42cab601 | 102 | test_done |