]> git.ipfire.org Git - thirdparty/git.git/blame - t/t3800-mktag.sh
path.c: don't call the match function without value in trie_find()
[thirdparty/git.git] / t / t3800-mktag.sh
CommitLineData
446c6fae
RJ
1#!/bin/sh
2#
3#
4
0cb0e143 5test_description='git mktag: tag object verify test'
446c6fae
RJ
6
7. ./test-lib.sh
8
9###########################################################
10# check the tag.sig file, expecting verify_tag() to fail,
11# and checking that the error message matches the pattern
12# given in the expect.pat file.
13
14check_verify_failure () {
e9b20943
JH
15 expect="$2"
16 test_expect_success "$1" '
0cb0e143 17 ( test_must_fail git mktag <tag.sig 2>message ) &&
525d4615 18 grep "$expect" message
e9b20943 19 '
446c6fae
RJ
20}
21
22###########################################################
23# first create a commit, so we have a valid object/type
24# for the tag.
4a45f7dd
BG
25test_expect_success 'setup' '
26 echo Hello >A &&
27 git update-index --add A &&
28 git commit -m "Initial commit" &&
29 head=$(git rev-parse --verify HEAD)
30'
446c6fae
RJ
31
32############################################################
33# 1. length check
34
35cat >tag.sig <<EOF
36too short for a tag
37EOF
38
e9b20943
JH
39check_verify_failure 'Tag object length check' \
40 '^error: .*size wrong.*$'
446c6fae
RJ
41
42############################################################
43# 2. object line label check
44
45cat >tag.sig <<EOF
46xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895
47type tag
48tag mytag
e0aaf781
BC
49tagger . <> 0 +0000
50
446c6fae
RJ
51EOF
52
e9b20943 53check_verify_failure '"object" line label check' '^error: char0: .*"object "$'
446c6fae
RJ
54
55############################################################
56# 3. object line SHA1 check
57
58cat >tag.sig <<EOF
59object zz9e9b33986b1c2670fff52c5067603117b3e895
60type tag
61tag mytag
e0aaf781
BC
62tagger . <> 0 +0000
63
446c6fae
RJ
64EOF
65
e9b20943 66check_verify_failure '"object" line SHA1 check' '^error: char7: .*SHA1 hash$'
446c6fae
RJ
67
68############################################################
69# 4. type line label check
70
71cat >tag.sig <<EOF
72object 779e9b33986b1c2670fff52c5067603117b3e895
73xxxx tag
74tag mytag
e0aaf781
BC
75tagger . <> 0 +0000
76
446c6fae
RJ
77EOF
78
e9b20943 79check_verify_failure '"type" line label check' '^error: char47: .*"\\ntype "$'
446c6fae
RJ
80
81############################################################
82# 5. type line eol check
83
84echo "object 779e9b33986b1c2670fff52c5067603117b3e895" >tag.sig
2aad957a 85printf "type tagsssssssssssssssssssssssssssssss" >>tag.sig
446c6fae 86
e9b20943 87check_verify_failure '"type" line eol check' '^error: char48: .*"\\n"$'
446c6fae
RJ
88
89############################################################
90# 6. tag line label check #1
91
92cat >tag.sig <<EOF
93object 779e9b33986b1c2670fff52c5067603117b3e895
94type tag
95xxx mytag
e0aaf781
BC
96tagger . <> 0 +0000
97
446c6fae
RJ
98EOF
99
e9b20943
JH
100check_verify_failure '"tag" line label check #1' \
101 '^error: char57: no "tag " found$'
446c6fae
RJ
102
103############################################################
104# 7. tag line label check #2
105
106cat >tag.sig <<EOF
107object 779e9b33986b1c2670fff52c5067603117b3e895
108type taggggggggggggggggggggggggggggggg
109tag
110EOF
111
e9b20943
JH
112check_verify_failure '"tag" line label check #2' \
113 '^error: char87: no "tag " found$'
446c6fae
RJ
114
115############################################################
116# 8. type line type-name length check
117
118cat >tag.sig <<EOF
119object 779e9b33986b1c2670fff52c5067603117b3e895
120type taggggggggggggggggggggggggggggggg
121tag mytag
122EOF
123
e9b20943
JH
124check_verify_failure '"type" line type-name length check' \
125 '^error: char53: type too long$'
446c6fae
RJ
126
127############################################################
128# 9. verify object (SHA1/type) check
129
130cat >tag.sig <<EOF
131object 779e9b33986b1c2670fff52c5067603117b3e895
132type tagggg
133tag mytag
e0aaf781
BC
134tagger . <> 0 +0000
135
446c6fae
RJ
136EOF
137
e9b20943
JH
138check_verify_failure 'verify object (SHA1/type) check' \
139 '^error: char7: could not verify object.*$'
446c6fae
RJ
140
141############################################################
142# 10. verify tag-name check
143
144cat >tag.sig <<EOF
145object $head
146type commit
147tag my tag
e0aaf781
BC
148tagger . <> 0 +0000
149
446c6fae
RJ
150EOF
151
e9b20943
JH
152check_verify_failure 'verify tag-name check' \
153 '^error: char67: could not verify tag name$'
446c6fae
RJ
154
155############################################################
3dff5379 156# 11. tagger line label check #1
446c6fae
RJ
157
158cat >tag.sig <<EOF
159object $head
160type commit
161tag mytag
e0aaf781
BC
162
163This is filler
446c6fae
RJ
164EOF
165
e9b20943 166check_verify_failure '"tagger" line label check #1' \
e0aaf781 167 '^error: char70: could not find "tagger "$'
446c6fae
RJ
168
169############################################################
3dff5379 170# 12. tagger line label check #2
446c6fae
RJ
171
172cat >tag.sig <<EOF
173object $head
174type commit
175tag mytag
176tagger
e0aaf781
BC
177
178This is filler
446c6fae
RJ
179EOF
180
e9b20943 181check_verify_failure '"tagger" line label check #2' \
e0aaf781 182 '^error: char70: could not find "tagger "$'
446c6fae
RJ
183
184############################################################
ba26ab99 185# 13. disallow missing tag author name
446c6fae
RJ
186
187cat >tag.sig <<EOF
188object $head
189type commit
190tag mytag
e0aaf781
BC
191tagger <> 0 +0000
192
193This is filler
194EOF
195
ba26ab99 196check_verify_failure 'disallow missing tag author name' \
e0aaf781
BC
197 '^error: char77: missing tagger name$'
198
199############################################################
ba26ab99 200# 14. disallow missing tag author name
e0aaf781
BC
201
202cat >tag.sig <<EOF
203object $head
204type commit
205tag mytag
206tagger T A Gger <
207 > 0 +0000
208
209EOF
210
ba26ab99
BC
211check_verify_failure 'disallow malformed tagger' \
212 '^error: char77: malformed tagger field$'
e0aaf781
BC
213
214############################################################
215# 15. allow empty tag email
216
217cat >tag.sig <<EOF
218object $head
219type commit
220tag mytag
221tagger T A Gger <> 0 +0000
222
223EOF
224
225test_expect_success \
226 'allow empty tag email' \
0cb0e143 227 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
e0aaf781
BC
228
229############################################################
ba26ab99
BC
230# 16. disallow spaces in tag email
231
232cat >tag.sig <<EOF
233object $head
234type commit
235tag mytag
236tagger T A Gger <tag ger@example.com> 0 +0000
237
238EOF
239
240check_verify_failure 'disallow spaces in tag email' \
241 '^error: char77: malformed tagger field$'
242
243############################################################
244# 17. disallow missing tag timestamp
e0aaf781 245
74f16b0c 246tr '_' ' ' >tag.sig <<EOF
e0aaf781
BC
247object $head
248type commit
249tag mytag
74f16b0c 250tagger T A Gger <tagger@example.com>__
e0aaf781
BC
251
252EOF
253
ba26ab99
BC
254check_verify_failure 'disallow missing tag timestamp' \
255 '^error: char107: missing tag timestamp$'
e0aaf781
BC
256
257############################################################
ba26ab99 258# 18. detect invalid tag timestamp1
e0aaf781
BC
259
260cat >tag.sig <<EOF
261object $head
262type commit
263tag mytag
264tagger T A Gger <tagger@example.com> Tue Mar 25 15:47:44 2008
265
266EOF
267
ba26ab99
BC
268check_verify_failure 'detect invalid tag timestamp1' \
269 '^error: char107: missing tag timestamp$'
e0aaf781
BC
270
271############################################################
ba26ab99
BC
272# 19. detect invalid tag timestamp2
273
274cat >tag.sig <<EOF
275object $head
276type commit
277tag mytag
278tagger T A Gger <tagger@example.com> 2008-03-31T12:20:15-0500
279
280EOF
281
282check_verify_failure 'detect invalid tag timestamp2' \
283 '^error: char111: malformed tag timestamp$'
284
285############################################################
286# 20. detect invalid tag timezone1
e0aaf781
BC
287
288cat >tag.sig <<EOF
289object $head
290type commit
291tag mytag
292tagger T A Gger <tagger@example.com> 1206478233 GMT
293
294EOF
295
ba26ab99
BC
296check_verify_failure 'detect invalid tag timezone1' \
297 '^error: char118: malformed tag timezone$'
298
299############################################################
300# 21. detect invalid tag timezone2
301
302cat >tag.sig <<EOF
303object $head
304type commit
305tag mytag
306tagger T A Gger <tagger@example.com> 1206478233 + 30
307
308EOF
309
310check_verify_failure 'detect invalid tag timezone2' \
311 '^error: char118: malformed tag timezone$'
312
313############################################################
314# 22. detect invalid tag timezone3
315
316cat >tag.sig <<EOF
317object $head
318type commit
319tag mytag
320tagger T A Gger <tagger@example.com> 1206478233 -1430
321
322EOF
323
324check_verify_failure 'detect invalid tag timezone3' \
e0aaf781
BC
325 '^error: char118: malformed tag timezone$'
326
327############################################################
ba26ab99 328# 23. detect invalid header entry
e0aaf781
BC
329
330cat >tag.sig <<EOF
331object $head
332type commit
333tag mytag
334tagger T A Gger <tagger@example.com> 1206478233 -0500
335this line should not be here
336
337EOF
338
339check_verify_failure 'detect invalid header entry' \
340 '^error: char124: trailing garbage in tag header$'
341
342############################################################
ba26ab99 343# 24. create valid tag
e0aaf781
BC
344
345cat >tag.sig <<EOF
346object $head
347type commit
348tag mytag
349tagger T A Gger <tagger@example.com> 1206478233 -0500
350
446c6fae
RJ
351EOF
352
353test_expect_success \
354 'create valid tag' \
0cb0e143 355 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
446c6fae
RJ
356
357############################################################
ba26ab99 358# 25. check mytag
446c6fae
RJ
359
360test_expect_success \
361 'check mytag' \
0cb0e143 362 'git tag -l | grep mytag'
446c6fae
RJ
363
364
365test_done