]>
Commit | Line | Data |
---|---|---|
5312ab11 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='test describe | |
4 | ||
5 | B | |
6 | .--------------o----o----o----x | |
7 | / / / | |
8 | o----o----o----o----o----. / | |
9 | \ A c / | |
10 | .------------o---o---o | |
11 | D e | |
12 | ' | |
13 | . ./test-lib.sh | |
14 | ||
15 | check_describe () { | |
16 | expect="$1" | |
17 | shift | |
3291fe40 | 18 | R=$(git describe "$@" 2>err.actual) |
be7bae0d | 19 | S=$? |
3291fe40 | 20 | cat err.actual >&3 |
5312ab11 | 21 | test_expect_success "describe $*" ' |
be7bae0d | 22 | test $S = 0 && |
5312ab11 JH |
23 | case "$R" in |
24 | $expect) echo happy ;; | |
25 | *) echo "Oops - $R is not $expect"; | |
26 | false ;; | |
27 | esac | |
28 | ' | |
29 | } | |
30 | ||
31 | test_expect_success setup ' | |
32 | ||
33 | test_tick && | |
3604e7c5 | 34 | echo one >file && git add file && git commit -m initial && |
5be60078 | 35 | one=$(git rev-parse HEAD) && |
5312ab11 | 36 | |
024ab976 JH |
37 | git describe --always HEAD && |
38 | ||
5312ab11 | 39 | test_tick && |
3604e7c5 | 40 | echo two >file && git add file && git commit -m second && |
5be60078 | 41 | two=$(git rev-parse HEAD) && |
5312ab11 JH |
42 | |
43 | test_tick && | |
3604e7c5 | 44 | echo three >file && git add file && git commit -m third && |
5312ab11 JH |
45 | |
46 | test_tick && | |
3604e7c5 | 47 | echo A >file && git add file && git commit -m A && |
5312ab11 | 48 | test_tick && |
3604e7c5 | 49 | git tag -a -m A A && |
5312ab11 JH |
50 | |
51 | test_tick && | |
3604e7c5 | 52 | echo c >file && git add file && git commit -m c && |
5312ab11 | 53 | test_tick && |
3604e7c5 | 54 | git tag c && |
5312ab11 JH |
55 | |
56 | git reset --hard $two && | |
57 | test_tick && | |
3604e7c5 | 58 | echo B >side && git add side && git commit -m B && |
5312ab11 | 59 | test_tick && |
3604e7c5 | 60 | git tag -a -m B B && |
5312ab11 JH |
61 | |
62 | test_tick && | |
3604e7c5 | 63 | git merge -m Merged c && |
5be60078 | 64 | merged=$(git rev-parse HEAD) && |
5312ab11 JH |
65 | |
66 | git reset --hard $two && | |
67 | test_tick && | |
3604e7c5 | 68 | echo D >another && git add another && git commit -m D && |
5312ab11 | 69 | test_tick && |
3604e7c5 | 70 | git tag -a -m D D && |
5312ab11 JH |
71 | |
72 | test_tick && | |
73 | echo DD >another && git commit -a -m another && | |
74 | ||
75 | test_tick && | |
3604e7c5 | 76 | git tag e && |
5312ab11 JH |
77 | |
78 | test_tick && | |
79 | echo DDD >another && git commit -a -m "yet another" && | |
80 | ||
81 | test_tick && | |
3604e7c5 | 82 | git merge -m Merged $merged && |
5312ab11 JH |
83 | |
84 | test_tick && | |
5be60078 | 85 | echo X >file && echo X >side && git add file side && |
3604e7c5 | 86 | git commit -m x |
5312ab11 JH |
87 | |
88 | ' | |
89 | ||
90 | check_describe A-* HEAD | |
91 | check_describe A-* HEAD^ | |
92 | check_describe D-* HEAD^^ | |
93 | check_describe A-* HEAD^^2 | |
94 | check_describe B HEAD^^2^ | |
7a0d61bb | 95 | check_describe D-* HEAD^^^ |
5312ab11 | 96 | |
7e425c4f SP |
97 | check_describe c-* --tags HEAD |
98 | check_describe c-* --tags HEAD^ | |
99 | check_describe e-* --tags HEAD^^ | |
100 | check_describe c-* --tags HEAD^^2 | |
5312ab11 | 101 | check_describe B --tags HEAD^^2^ |
7a0d61bb TR |
102 | check_describe e --tags HEAD^^^ |
103 | ||
104 | check_describe heads/master --all HEAD | |
105 | check_describe tags/c-* --all HEAD^ | |
106 | check_describe tags/e --all HEAD^^^ | |
5312ab11 | 107 | |
518120e3 | 108 | check_describe B-0-* --long HEAD^^2^ |
4d4c3e1c | 109 | check_describe A-3-* --long HEAD^^2 |
518120e3 | 110 | |
81dc223d SP |
111 | : >err.expect |
112 | check_describe A --all A^0 | |
113 | test_expect_success 'no warning was displayed for A' ' | |
114 | test_cmp err.expect err.actual | |
115 | ' | |
116 | ||
3291fe40 SP |
117 | test_expect_success 'rename tag A to Q locally' ' |
118 | mv .git/refs/tags/A .git/refs/tags/Q | |
119 | ' | |
120 | cat - >err.expect <<EOF | |
121 | warning: tag 'A' is really 'Q' here | |
122 | EOF | |
123 | check_describe A-* HEAD | |
124 | test_expect_success 'warning was displayed for Q' ' | |
3af82863 | 125 | test_cmp err.expect err.actual |
3291fe40 SP |
126 | ' |
127 | test_expect_success 'rename tag Q back to A' ' | |
128 | mv .git/refs/tags/Q .git/refs/tags/A | |
129 | ' | |
130 | ||
d1b28f51 SP |
131 | test_expect_success 'pack tag refs' 'git pack-refs' |
132 | check_describe A-* HEAD | |
133 | ||
9f67d2e8 JP |
134 | check_describe "A-*[0-9a-f]" --dirty |
135 | ||
136 | test_expect_success 'set-up dirty work tree' ' | |
137 | echo >>file | |
138 | ' | |
139 | ||
140 | check_describe "A-*[0-9a-f]-dirty" --dirty | |
141 | ||
142 | check_describe "A-*[0-9a-f].mod" --dirty=.mod | |
143 | ||
144 | test_expect_success 'describe --dirty HEAD' ' | |
145 | test_must_fail git describe --dirty HEAD | |
146 | ' | |
147 | ||
4ed19a3c MD |
148 | test_expect_success 'set-up matching pattern tests' ' |
149 | git tag -a -m test-annotated test-annotated && | |
150 | echo >>file && | |
151 | test_tick && | |
152 | git commit -a -m "one more" && | |
153 | git tag test1-lightweight && | |
154 | echo >>file && | |
155 | test_tick && | |
156 | git commit -a -m "yet another" && | |
157 | git tag test2-lightweight && | |
158 | echo >>file && | |
159 | test_tick && | |
160 | git commit -a -m "even more" | |
161 | ||
162 | ' | |
163 | ||
164 | check_describe "test-annotated-*" --match="test-*" | |
165 | ||
166 | check_describe "test1-lightweight-*" --tags --match="test1-*" | |
167 | ||
168 | check_describe "test2-lightweight-*" --tags --match="test2-*" | |
169 | ||
14d4642e SP |
170 | check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^ |
171 | ||
5312ab11 | 172 | test_done |