@@ -19,6 +19,7 @@ import (
19
19
"code.gitea.io/gitea/models/unittest"
20
20
user_model "code.gitea.io/gitea/models/user"
21
21
alpine_module "code.gitea.io/gitea/modules/packages/alpine"
22
+ alpine_service "code.gitea.io/gitea/services/packages/alpine"
22
23
"code.gitea.io/gitea/tests"
23
24
24
25
"github.com/stretchr/testify/assert"
@@ -59,7 +60,34 @@ Djfa/2q5bH4699v++uMAAAAAAAAAAAAAAAAAAAAAAHbgA/eXQh8AKAAA`
59
60
content , err := base64 .StdEncoding .DecodeString (base64AlpinePackageContent )
60
61
assert .NoError (t , err )
61
62
62
- branches := []string {"v3.16" , "v3.17" , "v3.18" }
63
+ base64AlpinePackageNoArchContent := `H4sIAAAAAAACA9ML9nT30wsKdtQrLU4t0jUzTUo1NDVP0ysqTtQrKE1ioAYwAAIzExMwDQTotCGI
64
+ bWhiampuYmRiaGrMYGBoZGZkxKBgwEAHUFpcklikoMAwQkHLB7eoE40P9n5jvx32t7Dy9rq7x19k
65
+ 66cJPV38t/h+vWe2jdXy+/PzPT0YTF5z39i4cPFptcLa1C1lD0z/XvrNp6In/7nP4PPCF2pZu8uV
66
+ z74QXLxpY1XWJuVFysqVf+PdizccFbD6ZL/QPGXd1Ri1fec2XBNuYfK/rFa6wF/h3dK/W12f8mxP
67
+ 04iP3aCy+vPx7h9S+5M1LLkWr5M/4ezGt3bDW/FjBp/S9hiKP72s/XrJ0vWtO0zr5wa+D/X8XluW
68
+ d7BLP7XS3YUhd8WbPPF/NW3691ONJbXsRb69O7BIMZC96uTri+utC/fbie5J+n7zhCxD4Aep/qet
69
+ QnlCZyN8MhNdVNlNl7965R1nExrrGvfI/YQZFx8Dg+d9122hZsYd/24WL/L69OWrDAN/y//nS7im
70
+ XEive3v7QeTe433TPj/X71+9yHiV6+E9k++3TL8V0Xoq9panhNt23fLgau/pTOvmKx6bV/pS26+Y
71
+ 5UP4viyuklYeu4/BZl6rLINe1L/uWuUXcH5z7pa2b9+/rp/v/8dFgc1PL3bO3/iVcrI//J/LMU2X
72
+ Nzu1IaMmWXnGp7CmyQIR39d0Nai9/+tdPbfjvmsNH88Tu7uVrvNuJE0wjxfePXGv/KHNXD+mnG0t
73
+ yTPu+Na0b5WR9O4t0yMd9T5k6ui7hOyU/jL/4dOn6neLwhdrZIZfcl1ectnGvUTurWDo1vY5Gw9k
74
+ PTQLVgcA61F+7gAEAAAfiwgAAAAAAAID7VVNa9wwEPXZv2Ig53hHlizbCzkVkobQJtDkB4wl2SvW
75
+ lhdbTpP++oyXQGEPLYU2paTvIs3X05PQSNnmjp4+OrJumjfZ3c3V9efL2+T3AhlaqePIOB0Rc50I
76
+ VRSlypUoZIJCKJQJPCVvgGWONLGU5H1CCDDRD+4CU57S6zT5j3eCP9Tyv9T/GsuT/scyLxPAt+z/
77
+ aRzjj/J+Fv9HcQZXLriJorPQPAM1i+8tyEzkGZ5PmJ7BMvvQQUt7tx4BPPJH4ccAIpN5Jjj+hSJc
78
+ ugZAghDbArco4eH+A+SYq/Sw7wINDi6g89HReRhpMrvVzTzsFZlaV2Hbutmw4zVhmXo2djEe5u1m
79
+ c6zNzDikR3mW1a61JepaC0SZHsjsqTsyPoR9GL+GdPbf1iSFtU5Xyu/c4+Q7H04lMfvgI3vT3hsX
80
+ 5rX40/U9b5CWOA78Mhrq+2ewLjrDp7VNWQbtaF6ZXVWZIhdV09RWOIvU6BqNboSxLSEpkrpQq80x
81
+ W1Nla6NavuqtrJQ0sv17D+4L2oD1lwAIAAAfiwgAAAAAAAID7dM/SgNBFAbw6cSAnYXlXsDNm50/
82
+ u1METBeIkEBMK87uzKKEJbB/IN7CxhN4AI/gNcRD6BWciI0WSiBGxO/XvA9mile8L+5P7WrkrfN1
83
+ 049dV1XXbNso0FK+zeDzJC4SxqVSqUwkV4IR51KkLFqxHeia1tZhFfY/cR4V7VXlB9QL0b5HnUXD
84
+ 6fj4bDI5ncXFpS8WTVfFs9GQD5wVxgrvlde5zMmJRKm89KVRmnhmyJYuo5RMj8Ef8EOV36j/6/yx
85
+ /5qnxKJ1J8MZJifskD2Zu+fzxfggmT+83F4c3dw/7u1vtf/1ctl+9e+7dwAAAAAAAAAAAAAAAAAA
86
+ AACAX/AKARNTyAAoAAA=`
87
+ noarchContent , err := base64 .StdEncoding .DecodeString (base64AlpinePackageNoArchContent )
88
+ assert .NoError (t , err )
89
+
90
+ branches := []string {"v3.16" , "v3.17" }
63
91
repositories := []string {"main" , "testing" }
64
92
65
93
rootURL := fmt .Sprintf ("/api/packages/%s/alpine" , user .Name )
@@ -139,63 +167,71 @@ Djfa/2q5bH4699v++uMAAAAAAAAAAAAAAAAAAAAAAHbgA/eXQh8AKAAA`
139
167
})
140
168
})
141
169
142
- t . Run ( "Index" , func (t * testing. T ) {
143
- defer tests . PrintCurrentTest ( t )( )
170
+ readIndexContent := func (r io. Reader ) ( string , error ) {
171
+ br := bufio . NewReader ( r )
144
172
145
- url := fmt .Sprintf ("%s/%s/%s/x86_64/APKINDEX.tar.gz" , rootURL , branch , repository )
173
+ gzr , err := gzip .NewReader (br )
174
+ if err != nil {
175
+ return "" , err
176
+ }
146
177
147
- req := NewRequest (t , "GET" , url )
148
- resp := MakeRequest (t , req , http .StatusOK )
149
-
150
- assert .Condition (t , func () bool {
151
- br := bufio .NewReader (resp .Body )
152
-
153
- gzr , err := gzip .NewReader (br )
154
- assert .NoError (t , err )
178
+ for {
179
+ gzr .Multistream (false )
155
180
181
+ tr := tar .NewReader (gzr )
156
182
for {
157
- gzr .Multistream (false )
183
+ hd , err := tr .Next ()
184
+ if err == io .EOF {
185
+ break
186
+ }
187
+ if err != nil {
188
+ return "" , err
189
+ }
158
190
159
- tr := tar .NewReader (gzr )
160
- for {
161
- hd , err := tr .Next ()
162
- if err == io .EOF {
163
- break
191
+ if hd .Name == alpine_service .IndexFilename {
192
+ buf , err := io .ReadAll (tr )
193
+ if err != nil {
194
+ return "" , err
164
195
}
165
- assert .NoError (t , err )
166
196
167
- if hd .Name == "APKINDEX" {
168
- buf , err := io .ReadAll (tr )
169
- assert .NoError (t , err )
170
-
171
- s := string (buf )
172
-
173
- assert .Contains (t , s , "C:Q1/se1PjO94hYXbfpNR1/61hVORIc=\n " )
174
- assert .Contains (t , s , "P:" + packageName + "\n " )
175
- assert .Contains (t , s , "V:" + packageVersion + "\n " )
176
- assert .Contains (t , s , "A:x86_64\n " )
177
- assert .Contains (t , s , "T:Gitea Test Package\n " )
178
- assert .Contains (t , s , "U:https://gitea.io/\n " )
179
- assert .Contains (t , s , "L:MIT\n " )
180
- assert .Contains (t , s , "S:1353\n " )
181
- assert .Contains (t , s , "I:4096\n " )
182
- assert .Contains (t , s , "o:gitea-test\n " )
183
- assert .
Contains (
t ,
s ,
"m:KN4CK3R <[email protected] >\n " )
184
- assert .Contains (t , s , "t:1679498030\n " )
185
-
186
- return true
187
- }
197
+ return string (buf ), nil
188
198
}
199
+ }
189
200
190
- err = gzr .Reset (br )
191
- if err == io .EOF {
192
- break
193
- }
194
- assert .NoError (t , err )
201
+ err = gzr .Reset (br )
202
+ if err == io .EOF {
203
+ break
204
+ }
205
+ if err != nil {
206
+ return "" , err
195
207
}
208
+ }
196
209
197
- return false
198
- })
210
+ return "" , io .EOF
211
+ }
212
+
213
+ t .Run ("Index" , func (t * testing.T ) {
214
+ defer tests .PrintCurrentTest (t )()
215
+
216
+ req := NewRequest (t , "GET" , fmt .Sprintf ("%s/%s/%s/x86_64/APKINDEX.tar.gz" , rootURL , branch , repository ))
217
+ resp := MakeRequest (t , req , http .StatusOK )
218
+
219
+ content , err := readIndexContent (resp .Body )
220
+ assert .NoError (t , err )
221
+
222
+ assert .Contains (t , content , "C:Q1/se1PjO94hYXbfpNR1/61hVORIc=\n " )
223
+ assert .Contains (t , content , "P:" + packageName + "\n " )
224
+ assert .Contains (t , content , "V:" + packageVersion + "\n " )
225
+ assert .Contains (t , content , "A:x86_64\n " )
226
+ assert .NotContains (t , content , "A:noarch\n " )
227
+ assert .Contains (t , content , "T:Gitea Test Package\n " )
228
+ assert .Contains (t , content , "U:https://gitea.io/\n " )
229
+ assert .Contains (t , content , "L:MIT\n " )
230
+ assert .Contains (t , content , "S:1353\n " )
231
+ assert .Contains (t , content , "I:4096\n " )
232
+ assert .Contains (t , content , "o:gitea-test\n " )
233
+ assert .
Contains (
t ,
content ,
"m:KN4CK3R <[email protected] >\n " )
234
+ assert .Contains (t , content , "t:1679498030\n " )
199
235
})
200
236
201
237
t .Run ("Download" , func (t * testing.T ) {
@@ -204,6 +240,35 @@ Djfa/2q5bH4699v++uMAAAAAAAAAAAAAAAAAAAAAAHbgA/eXQh8AKAAA`
204
240
req := NewRequest (t , "GET" , fmt .Sprintf ("%s/%s/%s/x86_64/%s-%s.apk" , rootURL , branch , repository , packageName , packageVersion ))
205
241
MakeRequest (t , req , http .StatusOK )
206
242
})
243
+
244
+ t .Run ("NoArch" , func (t * testing.T ) {
245
+ defer tests .PrintCurrentTest (t )()
246
+
247
+ req := NewRequestWithBody (t , "PUT" , fmt .Sprintf ("%s/%s/%s" , rootURL , branch , repository ), bytes .NewReader (noarchContent )).
248
+ AddBasicAuth (user .Name )
249
+ MakeRequest (t , req , http .StatusCreated )
250
+
251
+ req = NewRequest (t , "GET" , fmt .Sprintf ("%s/%s/%s/x86_64/APKINDEX.tar.gz" , rootURL , branch , repository ))
252
+ resp := MakeRequest (t , req , http .StatusOK )
253
+
254
+ content , err := readIndexContent (resp .Body )
255
+ assert .NoError (t , err )
256
+
257
+ assert .Contains (t , content , "C:Q1/se1PjO94hYXbfpNR1/61hVORIc=\n " )
258
+ assert .Contains (t , content , "A:x86_64\n " )
259
+ assert .Contains (t , content , "C:Q1kbH5WoIPFccQYyATanaKXd2cJcc=\n " )
260
+ assert .NotContains (t , content , "A:noarch\n " )
261
+
262
+ // noarch package should be available with every architecture requested
263
+ for _ , arch := range []string {alpine_module .NoArch , "x86_64" , "my_arch" } {
264
+ req := NewRequest (t , "GET" , fmt .Sprintf ("%s/%s/%s/%s/gitea-noarch-1.4-r0.apk" , rootURL , branch , repository , arch ))
265
+ MakeRequest (t , req , http .StatusOK )
266
+ }
267
+
268
+ req = NewRequest (t , "DELETE" , fmt .Sprintf ("%s/%s/%s/noarch/gitea-noarch-1.4-r0.apk" , rootURL , branch , repository )).
269
+ AddBasicAuth (user .Name )
270
+ MakeRequest (t , req , http .StatusNoContent )
271
+ })
207
272
})
208
273
}
209
274
}
0 commit comments