Merge branch 'maint'
[git] / t / t3800-mktag.sh
1 #!/bin/sh
2 #
3 #
4
5 test_description='git-mktag: tag object verify test'
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
14 check_verify_failure () {
15         expect="$2"
16         test_expect_success "$1" '
17                 ( ! git-mktag <tag.sig 2>message ) &&
18                 grep -q "$expect" message
19         '
20 }
21
22 ###########################################################
23 # first create a commit, so we have a valid object/type
24 # for the tag.
25 echo Hello >A
26 git update-index --add A
27 git-commit -m "Initial commit"
28 head=$(git rev-parse --verify HEAD)
29
30 ############################################################
31 #  1. length check
32
33 cat >tag.sig <<EOF
34 too short for a tag
35 EOF
36
37 check_verify_failure 'Tag object length check' \
38         '^error: .*size wrong.*$'
39
40 ############################################################
41 #  2. object line label check
42
43 cat >tag.sig <<EOF
44 xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895
45 type tag
46 tag mytag
47 EOF
48
49 check_verify_failure '"object" line label check' '^error: char0: .*"object "$'
50
51 ############################################################
52 #  3. object line SHA1 check
53
54 cat >tag.sig <<EOF
55 object zz9e9b33986b1c2670fff52c5067603117b3e895
56 type tag
57 tag mytag
58 EOF
59
60 check_verify_failure '"object" line SHA1 check' '^error: char7: .*SHA1 hash$'
61
62 ############################################################
63 #  4. type line label check
64
65 cat >tag.sig <<EOF
66 object 779e9b33986b1c2670fff52c5067603117b3e895
67 xxxx tag
68 tag mytag
69 EOF
70
71 check_verify_failure '"type" line label check' '^error: char47: .*"\\ntype "$'
72
73 ############################################################
74 #  5. type line eol check
75
76 echo "object 779e9b33986b1c2670fff52c5067603117b3e895" >tag.sig
77 printf "type tagsssssssssssssssssssssssssssssss" >>tag.sig
78
79 check_verify_failure '"type" line eol check' '^error: char48: .*"\\n"$'
80
81 ############################################################
82 #  6. tag line label check #1
83
84 cat >tag.sig <<EOF
85 object 779e9b33986b1c2670fff52c5067603117b3e895
86 type tag
87 xxx mytag
88 EOF
89
90 check_verify_failure '"tag" line label check #1' \
91         '^error: char57: no "tag " found$'
92
93 ############################################################
94 #  7. tag line label check #2
95
96 cat >tag.sig <<EOF
97 object 779e9b33986b1c2670fff52c5067603117b3e895
98 type taggggggggggggggggggggggggggggggg
99 tag
100 EOF
101
102 check_verify_failure '"tag" line label check #2' \
103         '^error: char87: no "tag " found$'
104
105 ############################################################
106 #  8. type line type-name length check
107
108 cat >tag.sig <<EOF
109 object 779e9b33986b1c2670fff52c5067603117b3e895
110 type taggggggggggggggggggggggggggggggg
111 tag mytag
112 EOF
113
114 check_verify_failure '"type" line type-name length check' \
115         '^error: char53: type too long$'
116
117 ############################################################
118 #  9. verify object (SHA1/type) check
119
120 cat >tag.sig <<EOF
121 object 779e9b33986b1c2670fff52c5067603117b3e895
122 type tagggg
123 tag mytag
124 EOF
125
126 check_verify_failure 'verify object (SHA1/type) check' \
127         '^error: char7: could not verify object.*$'
128
129 ############################################################
130 # 10. verify tag-name check
131
132 cat >tag.sig <<EOF
133 object $head
134 type commit
135 tag my  tag
136 EOF
137
138 check_verify_failure 'verify tag-name check' \
139         '^error: char67: could not verify tag name$'
140
141 ############################################################
142 # 11. tagger line label check #1
143
144 cat >tag.sig <<EOF
145 object $head
146 type commit
147 tag mytag
148 EOF
149
150 check_verify_failure '"tagger" line label check #1' \
151         '^error: char70: could not find "tagger"$'
152
153 ############################################################
154 # 12. tagger line label check #2
155
156 cat >tag.sig <<EOF
157 object $head
158 type commit
159 tag mytag
160 tagger
161 EOF
162
163 check_verify_failure '"tagger" line label check #2' \
164         '^error: char70: could not find "tagger"$'
165
166 ############################################################
167 # 13. create valid tag
168
169 cat >tag.sig <<EOF
170 object $head
171 type commit
172 tag mytag
173 tagger another@example.com
174 EOF
175
176 test_expect_success \
177     'create valid tag' \
178     'git-mktag <tag.sig >.git/refs/tags/mytag 2>message'
179
180 ############################################################
181 # 14. check mytag
182
183 test_expect_success \
184     'check mytag' \
185     'git-tag -l | grep mytag'
186
187
188 test_done