]>
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 | |
03e8b541 | 11 | D,R e |
5312ab11 JH |
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 && |
03e8b541 SP |
71 | test_tick && |
72 | git tag -a -m R R && | |
5312ab11 JH |
73 | |
74 | test_tick && | |
75 | echo DD >another && git commit -a -m another && | |
76 | ||
77 | test_tick && | |
3604e7c5 | 78 | git tag e && |
5312ab11 JH |
79 | |
80 | test_tick && | |
81 | echo DDD >another && git commit -a -m "yet another" && | |
82 | ||
83 | test_tick && | |
3604e7c5 | 84 | git merge -m Merged $merged && |
5312ab11 JH |
85 | |
86 | test_tick && | |
5be60078 | 87 | echo X >file && echo X >side && git add file side && |
3604e7c5 | 88 | git commit -m x |
5312ab11 JH |
89 | |
90 | ' | |
91 | ||
92 | check_describe A-* HEAD | |
93 | check_describe A-* HEAD^ | |
03e8b541 | 94 | check_describe R-* HEAD^^ |
5312ab11 JH |
95 | check_describe A-* HEAD^^2 |
96 | check_describe B HEAD^^2^ | |
03e8b541 | 97 | check_describe R-* HEAD^^^ |
5312ab11 | 98 | |
7e425c4f SP |
99 | check_describe c-* --tags HEAD |
100 | check_describe c-* --tags HEAD^ | |
101 | check_describe e-* --tags HEAD^^ | |
102 | check_describe c-* --tags HEAD^^2 | |
5312ab11 | 103 | check_describe B --tags HEAD^^2^ |
7a0d61bb TR |
104 | check_describe e --tags HEAD^^^ |
105 | ||
106 | check_describe heads/master --all HEAD | |
107 | check_describe tags/c-* --all HEAD^ | |
108 | check_describe tags/e --all HEAD^^^ | |
5312ab11 | 109 | |
518120e3 | 110 | check_describe B-0-* --long HEAD^^2^ |
4d4c3e1c | 111 | check_describe A-3-* --long HEAD^^2 |
518120e3 | 112 | |
e00dd1e9 MC |
113 | check_describe c-7-* --tags |
114 | check_describe e-3-* --first-parent --tags | |
115 | ||
81dc223d SP |
116 | : >err.expect |
117 | check_describe A --all A^0 | |
118 | test_expect_success 'no warning was displayed for A' ' | |
119 | test_cmp err.expect err.actual | |
120 | ' | |
121 | ||
3291fe40 SP |
122 | test_expect_success 'rename tag A to Q locally' ' |
123 | mv .git/refs/tags/A .git/refs/tags/Q | |
124 | ' | |
125 | cat - >err.expect <<EOF | |
126 | warning: tag 'A' is really 'Q' here | |
127 | EOF | |
128 | check_describe A-* HEAD | |
b3e1900a JH |
129 | test_expect_success 'warning was displayed for Q' ' |
130 | test_i18ncmp err.expect err.actual | |
3291fe40 SP |
131 | ' |
132 | test_expect_success 'rename tag Q back to A' ' | |
133 | mv .git/refs/tags/Q .git/refs/tags/A | |
134 | ' | |
135 | ||
d1b28f51 SP |
136 | test_expect_success 'pack tag refs' 'git pack-refs' |
137 | check_describe A-* HEAD | |
138 | ||
9f67d2e8 JP |
139 | check_describe "A-*[0-9a-f]" --dirty |
140 | ||
141 | test_expect_success 'set-up dirty work tree' ' | |
142 | echo >>file | |
143 | ' | |
144 | ||
145 | check_describe "A-*[0-9a-f]-dirty" --dirty | |
146 | ||
147 | check_describe "A-*[0-9a-f].mod" --dirty=.mod | |
148 | ||
149 | test_expect_success 'describe --dirty HEAD' ' | |
150 | test_must_fail git describe --dirty HEAD | |
151 | ' | |
152 | ||
4ed19a3c MD |
153 | test_expect_success 'set-up matching pattern tests' ' |
154 | git tag -a -m test-annotated test-annotated && | |
155 | echo >>file && | |
156 | test_tick && | |
157 | git commit -a -m "one more" && | |
158 | git tag test1-lightweight && | |
159 | echo >>file && | |
160 | test_tick && | |
161 | git commit -a -m "yet another" && | |
162 | git tag test2-lightweight && | |
163 | echo >>file && | |
164 | test_tick && | |
165 | git commit -a -m "even more" | |
166 | ||
167 | ' | |
168 | ||
169 | check_describe "test-annotated-*" --match="test-*" | |
170 | ||
171 | check_describe "test1-lightweight-*" --tags --match="test1-*" | |
172 | ||
173 | check_describe "test2-lightweight-*" --tags --match="test2-*" | |
174 | ||
14d4642e SP |
175 | check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^ |
176 | ||
5312ab11 | 177 | test_done |