5 test_description
='git mktag: tag object verify test'
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
() {
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
25 test_expect_success
'setup' '
27 git update-index --add A &&
28 git commit -m "Initial commit" &&
29 head=$(git rev-parse --verify HEAD)
32 ############################################################
39 check_verify_failure
'Tag object length check' \
40 '^error: .*size wrong.*$'
42 ############################################################
43 # 2. object line label check
46 xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895
53 check_verify_failure
'"object" line label check' '^error: char0: .*"object "$'
55 ############################################################
56 # 3. object line SHA1 check
59 object zz9e9b33986b1c2670fff52c5067603117b3e895
66 check_verify_failure
'"object" line SHA1 check' '^error: char7: .*SHA1 hash$'
68 ############################################################
69 # 4. type line label check
72 object 779e9b33986b1c2670fff52c5067603117b3e895
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
93 object 779e9b33986b1c2670fff52c5067603117b3e895
100 check_verify_failure
'"tag" line label check #1' \
101 '^error: char57: no "tag " found$'
103 ############################################################
104 # 7. tag line label check #2
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
119 object 779e9b33986b1c2670fff52c5067603117b3e895
120 type taggggggggggggggggggggggggggggggg
124 check_verify_failure
'"type" line type-name length check' \
125 '^error: char53: type too long$'
127 ############################################################
128 # 9. verify object (SHA1/type) check
131 object 779e9b33986b1c2670fff52c5067603117b3e895
138 check_verify_failure
'verify object (SHA1/type) check' \
139 '^error: char7: could not verify object.*$'
141 ############################################################
142 # 10. verify tag-name check
152 check_verify_failure
'verify tag-name check' \
153 '^error: char67: could not verify tag name$'
155 ############################################################
156 # 11. tagger line label check #1
166 check_verify_failure
'"tagger" line label check #1' \
167 '^error: char70: could not find "tagger "$'
169 ############################################################
170 # 12. tagger line label check #2
181 check_verify_failure
'"tagger" line label check #2' \
182 '^error: char70: could not find "tagger "$'
184 ############################################################
185 # 13. disallow missing tag author name
196 check_verify_failure
'disallow missing tag author name' \
197 '^error: char77: missing tagger name$'
199 ############################################################
200 # 14. disallow missing tag author name
211 check_verify_failure
'disallow malformed tagger' \
212 '^error: char77: malformed tagger field$'
214 ############################################################
215 # 15. allow empty tag email
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
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
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
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
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
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
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
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
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
349 tagger T A Gger <tagger@example.com> 1206478233 -0500
353 test_expect_success \
355 'git mktag <tag.sig >.git/refs/tags/mytag 2>message'
357 ############################################################
360 test_expect_success \
362 'git tag -l | grep mytag'