@@ -18,6 +18,8 @@ package packageindex
18
18
import (
19
19
"testing"
20
20
21
+ "github.com/arduino/arduino-cli/arduino/cores"
22
+ "github.com/arduino/arduino-cli/arduino/resources"
21
23
"github.com/arduino/go-paths-helper"
22
24
"github.com/stretchr/testify/require"
23
25
semver "go.bug.st/relaxed-semver"
@@ -36,3 +38,286 @@ func TestIndexParsing(t *testing.T) {
36
38
require .NoError (t , err )
37
39
}
38
40
}
41
+
42
+ func TestIndexFromPlatformRelease (t * testing.T ) {
43
+ pr := & cores.PlatformRelease {
44
+ Resource : & resources.DownloadResource {
45
+ URL : "http://downloads.arduino.cc/cores/avr-1.6.23.tar.bz2" ,
46
+ ArchiveFileName : "avr-1.6.23.tar.bz2" ,
47
+ Checksum : "SHA-256:18618d7f256f26cd77c35f4c888d5d1b2334f07925094fdc99ac3188722284aa" ,
48
+ Size : 5001988 ,
49
+ },
50
+ Version : semver .MustParse ("1.8.3" ),
51
+ Help : cores.PlatformReleaseHelp {Online : "http://www.arduino.cc/en/Reference/HomePage" },
52
+ BoardsManifest : []* cores.BoardManifest {
53
+ {Name : "Arduino Yún" },
54
+ {Name : "Arduino/Genuino Uno" },
55
+ {Name : "Arduino Uno WiFi" },
56
+ },
57
+ Dependencies : cores.ToolDependencies {
58
+ {
59
+ ToolPackager : "arduino" ,
60
+ ToolName : "avr-gcc" ,
61
+ ToolVersion : semver .ParseRelaxed ("5.4.0-atmel3.6.1-arduino2" ),
62
+ },
63
+ {
64
+ ToolPackager : "arduino" ,
65
+ ToolName : "avrdude" ,
66
+ ToolVersion : semver .ParseRelaxed ("6.3.0-arduino14" ),
67
+ },
68
+ {
69
+ ToolPackager : "arduino" ,
70
+ ToolName : "arduinoOTA" ,
71
+ ToolVersion : semver .ParseRelaxed ("1.2.1" ),
72
+ },
73
+ },
74
+
75
+ Platform : & cores.Platform {
76
+ Name : "Arduino AVR Boards" ,
77
+ Architecture : "avr" ,
78
+ Category : "Arduino" ,
79
+
80
+ Package : & cores.Package {
81
+ Name : "arduino" ,
82
+ Maintainer : "Arduino" ,
83
+ WebsiteURL : "https://arduino.cc/" ,
84
+ URL : "" ,
85
+ Email : "packages@arduino.cc" ,
86
+ Help : cores.PackageHelp {Online : "http://www.arduino.cc/en/Reference/HomePage" },
87
+ Tools : map [string ]* cores.Tool {
88
+ "bossac" : {
89
+ Name : "bossac" ,
90
+ Releases : map [string ]* cores.ToolRelease {
91
+ "1.6.1-arduino" : {
92
+ Version : semver .ParseRelaxed ("1.6.1-arduino" ),
93
+ Flavors : []* cores.Flavor {
94
+ {
95
+ OS : "arm-linux-gnueabihf" ,
96
+ Resource : & resources.DownloadResource {
97
+ URL : "http://downloads.arduino.cc/bossac-1.6.1-arduino-arm-linux-gnueabihf.tar.bz2" ,
98
+ ArchiveFileName : "bossac-1.6.1-arduino-arm-linux-gnueabihf.tar.bz2" ,
99
+ Checksum : "SHA-256:8c4e63db982178919c824e7a35580dffc95c3426afa7285de3eb583982d4d391" ,
100
+ Size : 201341 ,
101
+ },
102
+ },
103
+ {
104
+ OS : "i686-mingw32" ,
105
+ Resource : & resources.DownloadResource {
106
+ URL : "http://downloads.arduino.cc/bossac-1.6.1-arduino-mingw32.tar.gz" ,
107
+ ArchiveFileName : "bossac-1.6.1-arduino-mingw32.tar.gz" ,
108
+ Checksum : "SHA-256:d59f43e2e83a337d04c4ae88b195a4ee175b8d87fff4c43144d23412a4a9513b" ,
109
+ Size : 222918 ,
110
+ },
111
+ },
112
+ },
113
+ },
114
+ "1.7.0" : {
115
+ Version : semver .ParseRelaxed ("1.7.0" ),
116
+ Flavors : []* cores.Flavor {
117
+ {
118
+ OS : "i686-mingw32" ,
119
+ Resource : & resources.DownloadResource {
120
+ URL : "http://downloads.arduino.cc/bossac-1.7.0-arduino-mingw32.tar.bz2" ,
121
+ ArchiveFileName : "bossac-1.7.0-arduino-mingw32.tar.bz2" ,
122
+ Checksum : "SHA-256:9ef7d11b4fabca0adc17102a0290957d5cc26ce46b422c3a5344722c80acc7b2" ,
123
+ Size : 243066 ,
124
+ },
125
+ },
126
+ {
127
+ OS : "x86_64-apple-darwin" ,
128
+ Resource : & resources.DownloadResource {
129
+ URL : "http://downloads.arduino.cc/bossac-1.7.0-arduino-x86_64-apple-darwin.tar.bz2" ,
130
+ ArchiveFileName : "bossac-1.7.0-arduino-x86_64-apple-darwin.tar.bz2" ,
131
+ Checksum : "SHA-256:feac36ab38876c163dcf51bdbcfbed01554eede3d41c59a0e152e170fe5164d2" ,
132
+ Size : 63822 ,
133
+ },
134
+ },
135
+ },
136
+ },
137
+ },
138
+ },
139
+ "arm-none-eabi-gcc" : {
140
+ Name : "arm-none-eabi-gcc" ,
141
+ Releases : map [string ]* cores.ToolRelease {
142
+ "4.8.3-2014q1" : {
143
+ Version : semver .ParseRelaxed ("4.8.3-2014q1" ),
144
+ Flavors : []* cores.Flavor {
145
+ {
146
+ OS : "arm-linux-gnueabihf" ,
147
+ Resource : & resources.DownloadResource {
148
+ URL : "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
149
+ ArchiveFileName : "gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
150
+ Checksum : "SHA-256:ebe96b34c4f434667cab0187b881ed585e7c7eb990fe6b69be3c81ec7e11e845" ,
151
+ Size : 44423906 ,
152
+ },
153
+ },
154
+ {
155
+ OS : "i686-mingw32" ,
156
+ Resource : & resources.DownloadResource {
157
+ URL : "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz" ,
158
+ ArchiveFileName : "gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz" ,
159
+ Checksum : "SHA-256:fd8c111c861144f932728e00abd3f7d1107e186eb9cd6083a54c7236ea78b7c2" ,
160
+ Size : 84537449 ,
161
+ },
162
+ },
163
+ },
164
+ },
165
+ "7-2017q4" : {
166
+ Version : semver .ParseRelaxed ("7-2017q4" ),
167
+ Flavors : []* cores.Flavor {
168
+ {
169
+ OS : "arm-linux-gnueabihf" ,
170
+ Resource : & resources.DownloadResource {
171
+ URL : "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
172
+ ArchiveFileName : "gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
173
+ Checksum : "SHA-256:ebe96b34c4f434667cab0187b881ed585e7c7eb990fe6b69be3c81ec7e11e845" ,
174
+ Size : 44423906 ,
175
+ },
176
+ },
177
+ {
178
+ OS : "aarch64-linux-gnu" ,
179
+ Resource : & resources.DownloadResource {
180
+ URL : "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2" ,
181
+ ArchiveFileName : "gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2" ,
182
+ Checksum : "SHA-256:6fb5752fb4d11012bd0a1ceb93a19d0641ff7cf29d289b3e6b86b99768e66f76" ,
183
+ Size : 99558726 ,
184
+ },
185
+ },
186
+ },
187
+ },
188
+ },
189
+ },
190
+ },
191
+ },
192
+ },
193
+ }
194
+
195
+ expectedIndex := Index {
196
+ IsTrusted : false ,
197
+ Packages : []* indexPackage {{
198
+ Name : "arduino" ,
199
+ Maintainer : "Arduino" ,
200
+ WebsiteURL : "https://arduino.cc/" ,
201
+ URL : "" ,
202
+ Email : "packages@arduino.cc" ,
203
+ Help : indexHelp {Online : "http://www.arduino.cc/en/Reference/HomePage" },
204
+ Platforms : []* indexPlatformRelease {{
205
+ Name : "Arduino AVR Boards" ,
206
+ Architecture : "avr" ,
207
+ Version : semver .MustParse ("1.8.3" ),
208
+ Category : "Arduino" ,
209
+ URL : "http://downloads.arduino.cc/cores/avr-1.6.23.tar.bz2" ,
210
+ ArchiveFileName : "avr-1.6.23.tar.bz2" ,
211
+ Checksum : "SHA-256:18618d7f256f26cd77c35f4c888d5d1b2334f07925094fdc99ac3188722284aa" ,
212
+ Size : "5001988" ,
213
+ Boards : []indexBoard {
214
+ {Name : "Arduino Yún" },
215
+ {Name : "Arduino/Genuino Uno" },
216
+ {Name : "Arduino Uno WiFi" },
217
+ },
218
+ Help : indexHelp {Online : "http://www.arduino.cc/en/Reference/HomePage" },
219
+ ToolDependencies : []indexToolDependency {
220
+ {
221
+ Packager : "arduino" ,
222
+ Name : "avr-gcc" ,
223
+ Version : semver .ParseRelaxed ("5.4.0-atmel3.6.1-arduino2" ),
224
+ },
225
+ {
226
+ Packager : "arduino" ,
227
+ Name : "avrdude" ,
228
+ Version : semver .ParseRelaxed ("6.3.0-arduino14" ),
229
+ },
230
+ {
231
+ Packager : "arduino" ,
232
+ Name : "arduinoOTA" ,
233
+ Version : semver .ParseRelaxed ("1.2.1" ),
234
+ },
235
+ },
236
+ }},
237
+ Tools : []* indexToolRelease {
238
+ {
239
+ Name : "bossac" ,
240
+ Version : semver .ParseRelaxed ("1.6.1-arduino" ),
241
+ Systems : []indexToolReleaseFlavour {
242
+ {
243
+ OS : "arm-linux-gnueabihf" ,
244
+ URL : "http://downloads.arduino.cc/bossac-1.6.1-arduino-arm-linux-gnueabihf.tar.bz2" ,
245
+ ArchiveFileName : "bossac-1.6.1-arduino-arm-linux-gnueabihf.tar.bz2" ,
246
+ Size : "201341" ,
247
+ Checksum : "SHA-256:8c4e63db982178919c824e7a35580dffc95c3426afa7285de3eb583982d4d391" ,
248
+ },
249
+ {
250
+ OS : "i686-mingw32" ,
251
+ URL : "http://downloads.arduino.cc/bossac-1.6.1-arduino-mingw32.tar.gz" ,
252
+ ArchiveFileName : "bossac-1.6.1-arduino-mingw32.tar.gz" ,
253
+ Size : "222918" ,
254
+ Checksum : "SHA-256:d59f43e2e83a337d04c4ae88b195a4ee175b8d87fff4c43144d23412a4a9513b" ,
255
+ },
256
+ },
257
+ },
258
+ {
259
+ Name : "bossac" ,
260
+ Version : semver .ParseRelaxed ("1.7.0" ),
261
+ Systems : []indexToolReleaseFlavour {
262
+ {
263
+ OS : "i686-mingw32" ,
264
+ URL : "http://downloads.arduino.cc/bossac-1.7.0-arduino-mingw32.tar.bz2" ,
265
+ ArchiveFileName : "bossac-1.7.0-arduino-mingw32.tar.bz2" ,
266
+ Size : "243066" ,
267
+ Checksum : "SHA-256:9ef7d11b4fabca0adc17102a0290957d5cc26ce46b422c3a5344722c80acc7b2" ,
268
+ },
269
+ {
270
+ OS : "x86_64-apple-darwin" ,
271
+ URL : "http://downloads.arduino.cc/bossac-1.7.0-arduino-x86_64-apple-darwin.tar.bz2" ,
272
+ ArchiveFileName : "bossac-1.7.0-arduino-x86_64-apple-darwin.tar.bz2" ,
273
+ Size : "63822" ,
274
+ Checksum : "SHA-256:feac36ab38876c163dcf51bdbcfbed01554eede3d41c59a0e152e170fe5164d2" ,
275
+ },
276
+ },
277
+ },
278
+ {
279
+ Name : "arm-none-eabi-gcc" ,
280
+ Version : semver .ParseRelaxed ("4.8.3-2014q1" ),
281
+ Systems : []indexToolReleaseFlavour {
282
+ {
283
+ OS : "arm-linux-gnueabihf" ,
284
+ URL : "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
285
+ ArchiveFileName : "gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
286
+ Size : "44423906" ,
287
+ Checksum : "SHA-256:ebe96b34c4f434667cab0187b881ed585e7c7eb990fe6b69be3c81ec7e11e845" ,
288
+ },
289
+ {
290
+ OS : "i686-mingw32" ,
291
+ URL : "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz" ,
292
+ ArchiveFileName : "gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz" ,
293
+ Size : "84537449" ,
294
+ Checksum : "SHA-256:fd8c111c861144f932728e00abd3f7d1107e186eb9cd6083a54c7236ea78b7c2" ,
295
+ },
296
+ },
297
+ },
298
+ {
299
+ Name : "arm-none-eabi-gcc" ,
300
+ Version : semver .ParseRelaxed ("7-2017q4" ),
301
+ Systems : []indexToolReleaseFlavour {
302
+ {
303
+ OS : "arm-linux-gnueabihf" ,
304
+ URL : "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
305
+ ArchiveFileName : "gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2" ,
306
+ Size : "44423906" ,
307
+ Checksum : "SHA-256:ebe96b34c4f434667cab0187b881ed585e7c7eb990fe6b69be3c81ec7e11e845" ,
308
+ },
309
+ {
310
+ OS : "aarch64-linux-gnu" ,
311
+ URL : "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2" ,
312
+ ArchiveFileName : "gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2" ,
313
+ Size : "99558726" ,
314
+ Checksum : "SHA-256:6fb5752fb4d11012bd0a1ceb93a19d0641ff7cf29d289b3e6b86b99768e66f76" ,
315
+ },
316
+ },
317
+ },
318
+ },
319
+ }},
320
+ }
321
+
322
+ require .Equal (t , expectedIndex , IndexFromPlatformRelease (pr ))
323
+ }
0 commit comments