Merge branch 'jc/revision-range-unpeel'
[git/mjg.git] / t / t3800-mktag.sh
blob8eb47942e2d7f9624058b3347f011db591a13434
1 #!/bin/sh
5 test_description='git mktag: tag object verify test'
7 . ./test-lib.sh
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.
14 check_verify_failure () {
15 expect="$2"
16 test_expect_success "$1" '
17 ( test_must_fail git mktag <tag.sig 2>message ) &&
18 grep "$expect" message
22 ###########################################################
23 # first create a commit, so we have a valid object/type
24 # for the tag.
25 test_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)
32 ############################################################
33 # 1. length check
35 cat >tag.sig <<EOF
36 too short for a tag
37 EOF
39 check_verify_failure 'Tag object length check' \
40 '^error: .*size wrong.*$'
42 ############################################################
43 # 2. object line label check
45 cat >tag.sig <<EOF
46 xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895
47 type tag
48 tag mytag
49 tagger . <> 0 +0000
51 EOF
53 check_verify_failure '"object" line label check' '^error: char0: .*"object "$'
55 ############################################################
56 # 3. object line SHA1 check
58 cat >tag.sig <<EOF
59 object zz9e9b33986b1c2670fff52c5067603117b3e895
60 type tag
61 tag mytag
62 tagger . <> 0 +0000
64 EOF
66 check_verify_failure '"object" line SHA1 check' '^error: char7: .*SHA1 hash$'
68 ############################################################
69 # 4. type line label check
71 cat >tag.sig <<EOF
72 object 779e9b33986b1c2670fff52c5067603117b3e895
73 xxxx tag
74 tag mytag
75 tagger . <> 0 +0000
77 EOF
79 check_verify_failure '"type" line label check' '^error: char47: .*"\\ntype "$'
81 ############################################################
82 # 5. type line eol check
84 echo "object 779e9b33986b1c2670fff52c5067603117b3e895" >tag.sig
85 printf "type tagsssssssssssssssssssssssssssssss" >>tag.sig
87 check_verify_failure '"type" line eol check' '^error: char48: .*"\\n"$'
89 ############################################################
90 # 6. tag line label check #1
92 cat >tag.sig <<EOF
93 object 779e9b33986b1c2670fff52c5067603117b3e895
94 type tag
95 xxx mytag
96 tagger . <> 0 +0000
98 EOF
100 check_verify_failure '"tag" line label check #1' \
101 '^error: char57: no "tag " found$'
103 ############################################################
104 # 7. tag line label check #2
106 cat >tag.sig <<EOF
107 object 779e9b33986b1c2670fff52c5067603117b3e895
108 type taggggggggggggggggggggggggggggggg
112 check_verify_failure '"tag" line label check #2' \
113 '^error: char87: no "tag " found$'
115 ############################################################
116 # 8. type line type-name length check
118 cat >tag.sig <<EOF
119 object 779e9b33986b1c2670fff52c5067603117b3e895
120 type taggggggggggggggggggggggggggggggg
121 tag mytag
124 check_verify_failure '"type" line type-name length check' \
125 '^error: char53: type too long$'
127 ############################################################
128 # 9. verify object (SHA1/type) check
130 cat >tag.sig <<EOF
131 object 779e9b33986b1c2670fff52c5067603117b3e895
132 type tagggg
133 tag mytag
134 tagger . <> 0 +0000
138 check_verify_failure 'verify object (SHA1/type) check' \
139 '^error: char7: could not verify object.*$'
141 ############################################################
142 # 10. verify tag-name check
144 cat >tag.sig <<EOF
145 object $head
146 type commit
147 tag my tag
148 tagger . <> 0 +0000
152 check_verify_failure 'verify tag-name check' \
153 '^error: char67: could not verify tag name$'
155 ############################################################
156 # 11. tagger line label check #1
158 cat >tag.sig <<EOF
159 object $head
160 type commit
161 tag mytag
163 This is filler
166 check_verify_failure '"tagger" line label check #1' \
167 '^error: char70: could not find "tagger "$'
169 ############################################################
170 # 12. tagger line label check #2
172 cat >tag.sig <<EOF
173 object $head
174 type commit
175 tag mytag
176 tagger
178 This is filler
181 check_verify_failure '"tagger" line label check #2' \
182 '^error: char70: could not find "tagger "$'
184 ############################################################
185 # 13. disallow missing tag author name
187 cat >tag.sig <<EOF
188 object $head
189 type commit
190 tag mytag
191 tagger <> 0 +0000
193 This is filler
196 check_verify_failure 'disallow missing tag author name' \
197 '^error: char77: missing tagger name$'
199 ############################################################
200 # 14. disallow missing tag author name
202 cat >tag.sig <<EOF
203 object $head
204 type commit
205 tag mytag
206 tagger T A Gger <
207 > 0 +0000
211 check_verify_failure 'disallow malformed tagger' \
212 '^error: char77: malformed tagger field$'
214 ############################################################
215 # 15. allow empty tag email
217 cat >tag.sig <<EOF
218 object $head
219 type commit
220 tag mytag
221 tagger T A Gger <> 0 +0000
225 test_expect_success \
226 'allow empty tag email' \
227 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
229 ############################################################
230 # 16. disallow spaces in tag email
232 cat >tag.sig <<EOF
233 object $head
234 type commit
235 tag mytag
236 tagger T A Gger <tag ger@example.com> 0 +0000
240 check_verify_failure 'disallow spaces in tag email' \
241 '^error: char77: malformed tagger field$'
243 ############################################################
244 # 17. disallow missing tag timestamp
246 tr '_' ' ' >tag.sig <<EOF
247 object $head
248 type commit
249 tag mytag
250 tagger T A Gger <tagger@example.com>__
254 check_verify_failure 'disallow missing tag timestamp' \
255 '^error: char107: missing tag timestamp$'
257 ############################################################
258 # 18. detect invalid tag timestamp1
260 cat >tag.sig <<EOF
261 object $head
262 type commit
263 tag mytag
264 tagger T A Gger <tagger@example.com> Tue Mar 25 15:47:44 2008
268 check_verify_failure 'detect invalid tag timestamp1' \
269 '^error: char107: missing tag timestamp$'
271 ############################################################
272 # 19. detect invalid tag timestamp2
274 cat >tag.sig <<EOF
275 object $head
276 type commit
277 tag mytag
278 tagger T A Gger <tagger@example.com> 2008-03-31T12:20:15-0500
282 check_verify_failure 'detect invalid tag timestamp2' \
283 '^error: char111: malformed tag timestamp$'
285 ############################################################
286 # 20. detect invalid tag timezone1
288 cat >tag.sig <<EOF
289 object $head
290 type commit
291 tag mytag
292 tagger T A Gger <tagger@example.com> 1206478233 GMT
296 check_verify_failure 'detect invalid tag timezone1' \
297 '^error: char118: malformed tag timezone$'
299 ############################################################
300 # 21. detect invalid tag timezone2
302 cat >tag.sig <<EOF
303 object $head
304 type commit
305 tag mytag
306 tagger T A Gger <tagger@example.com> 1206478233 + 30
310 check_verify_failure 'detect invalid tag timezone2' \
311 '^error: char118: malformed tag timezone$'
313 ############################################################
314 # 22. detect invalid tag timezone3
316 cat >tag.sig <<EOF
317 object $head
318 type commit
319 tag mytag
320 tagger T A Gger <tagger@example.com> 1206478233 -1430
324 check_verify_failure 'detect invalid tag timezone3' \
325 '^error: char118: malformed tag timezone$'
327 ############################################################
328 # 23. detect invalid header entry
330 cat >tag.sig <<EOF
331 object $head
332 type commit
333 tag mytag
334 tagger T A Gger <tagger@example.com> 1206478233 -0500
335 this line should not be here
339 check_verify_failure 'detect invalid header entry' \
340 '^error: char124: trailing garbage in tag header$'
342 ############################################################
343 # 24. create valid tag
345 cat >tag.sig <<EOF
346 object $head
347 type commit
348 tag mytag
349 tagger T A Gger <tagger@example.com> 1206478233 -0500
353 test_expect_success \
354 'create valid tag' \
355 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
357 ############################################################
358 # 25. check mytag
360 test_expect_success \
361 'check mytag' \
362 'git tag -l | grep mytag'
365 test_done