@@ -18,6 +18,8 @@ package packageindex
1818import (
1919 "testing"
2020
21+ "github.com/arduino/arduino-cli/arduino/cores"
22+ "github.com/arduino/arduino-cli/arduino/resources"
2123 "github.com/arduino/go-paths-helper"
2224 "github.com/stretchr/testify/require"
2325 semver "go.bug.st/relaxed-semver"
@@ -36,3 +38,286 @@ func TestIndexParsing(t *testing.T) {
3638 require .NoError (t , err )
3739 }
3840}
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