Skip to content

Commit 288fe38

Browse files
authored
Merge pull request #196 from per1234/boards-projectdata
Provide object-level packages[].platforms[].boards[] package index da…
2 parents 718be7e + 276774e commit 288fe38

File tree

4 files changed

+205
-0
lines changed

4 files changed

+205
-0
lines changed

Diff for: internal/project/projectdata/packageindex.go

+12
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ func InitializeForPackageIndex() {
4141

4242
packageIndexPackages = nil
4343
packageIndexPlatforms = nil
44+
packageIndexBoards = nil
4445
packageIndexTools = nil
4546
packageIndexSystems = nil
4647
packageIndexSchemaValidationResult = nil
@@ -51,6 +52,10 @@ func InitializeForPackageIndex() {
5152
packageIndexPlatforms = append(packageIndexPlatforms, getPackageIndexData(packageData.Object, packageData.JSONPointer, "platforms", packageData.ID+":", "architecture", "version")...)
5253
}
5354

55+
for _, platformData := range PackageIndexPlatforms() {
56+
packageIndexBoards = append(packageIndexBoards, getPackageIndexData(platformData.Object, platformData.JSONPointer, "boards", platformData.ID+" - ", "name", "")...)
57+
}
58+
5459
for _, packageData := range PackageIndexPackages() {
5560
packageIndexTools = append(packageIndexTools, getPackageIndexData(packageData.Object, packageData.JSONPointer, "tools", packageData.ID+":", "name", "version")...)
5661
}
@@ -98,6 +103,13 @@ func PackageIndexPlatforms() []PackageIndexData {
98103
return packageIndexPlatforms
99104
}
100105

106+
var packageIndexBoards []PackageIndexData
107+
108+
// PackageIndexBoards returns the slice of board data for the package index.
109+
func PackageIndexBoards() []PackageIndexData {
110+
return packageIndexBoards
111+
}
112+
101113
var packageIndexTools []PackageIndexData
102114

103115
// PackageIndexTools returns the slice of tool data for the package index.

Diff for: internal/project/projectdata/packageindex_test.go

+141
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ func TestInitializeForPackageIndex(t *testing.T) {
4545
packageIndexPackagesDataAssertion []PackageIndexData
4646
packageIndexPlatformsAssertion assert.ValueAssertionFunc
4747
packageIndexPlatformsDataAssertion []PackageIndexData
48+
packageIndexBoardsAssertion assert.ValueAssertionFunc
49+
packageIndexBoardsDataAssertion []PackageIndexData
4850
packageIndexToolsAssertion assert.ValueAssertionFunc
4951
packageIndexToolsDataAssertion []PackageIndexData
5052
packageIndexSystemsAssertion assert.ValueAssertionFunc
@@ -87,6 +89,41 @@ func TestInitializeForPackageIndex(t *testing.T) {
8789
JSONPointer: "/packages/1/platforms/1",
8890
},
8991
},
92+
packageIndexBoardsAssertion: assert.NotNil,
93+
packageIndexBoardsDataAssertion: []PackageIndexData{
94+
{
95+
ID: "foopackager1:[email protected] - My Board",
96+
JSONPointer: "/packages/0/platforms/0/boards/0",
97+
},
98+
{
99+
ID: "foopackager1:[email protected] - My Board Pro",
100+
JSONPointer: "/packages/0/platforms/0/boards/1",
101+
},
102+
{
103+
ID: "foopackager1:[email protected] - My Board",
104+
JSONPointer: "/packages/0/platforms/1/boards/0",
105+
},
106+
{
107+
ID: "foopackager1:[email protected] - My Board Pro",
108+
JSONPointer: "/packages/0/platforms/1/boards/1",
109+
},
110+
{
111+
ID: "foopackager2:[email protected] - My Board",
112+
JSONPointer: "/packages/1/platforms/0/boards/0",
113+
},
114+
{
115+
ID: "foopackager2:[email protected] - My Board Pro",
116+
JSONPointer: "/packages/1/platforms/0/boards/1",
117+
},
118+
{
119+
ID: "foopackager2:[email protected] - My Board",
120+
JSONPointer: "/packages/1/platforms/1/boards/0",
121+
},
122+
{
123+
ID: "foopackager2:[email protected] - My Board Pro",
124+
JSONPointer: "/packages/1/platforms/1/boards/1",
125+
},
126+
},
90127
packageIndexToolsAssertion: assert.NotNil,
91128
packageIndexToolsDataAssertion: []PackageIndexData{
92129
{
@@ -154,6 +191,53 @@ func TestInitializeForPackageIndex(t *testing.T) {
154191
ID: "/packages/1/platforms/1",
155192
JSONPointer: "/packages/1/platforms/1",
156193
},
194+
{
195+
ID: "foopackager2:[email protected]",
196+
JSONPointer: "/packages/1/platforms/2",
197+
},
198+
},
199+
packageIndexBoardsAssertion: assert.NotNil,
200+
packageIndexBoardsDataAssertion: []PackageIndexData{
201+
{
202+
ID: "/packages/0/platforms/0/boards/0",
203+
JSONPointer: "/packages/0/platforms/0/boards/0",
204+
},
205+
{
206+
ID: "/packages/0/platforms/0/boards/1",
207+
JSONPointer: "/packages/0/platforms/0/boards/1",
208+
},
209+
{
210+
ID: "/packages/0/platforms/1/boards/0",
211+
JSONPointer: "/packages/0/platforms/1/boards/0",
212+
},
213+
{
214+
ID: "/packages/0/platforms/1/boards/1",
215+
JSONPointer: "/packages/0/platforms/1/boards/1",
216+
},
217+
{
218+
ID: "/packages/1/platforms/0/boards/0",
219+
JSONPointer: "/packages/1/platforms/0/boards/0",
220+
},
221+
{
222+
ID: "/packages/1/platforms/0/boards/1",
223+
JSONPointer: "/packages/1/platforms/0/boards/1",
224+
},
225+
{
226+
ID: "/packages/1/platforms/1/boards/0",
227+
JSONPointer: "/packages/1/platforms/1/boards/0",
228+
},
229+
{
230+
ID: "/packages/1/platforms/1/boards/1",
231+
JSONPointer: "/packages/1/platforms/1/boards/1",
232+
},
233+
{
234+
ID: "/packages/1/platforms/2/boards/0",
235+
JSONPointer: "/packages/1/platforms/2/boards/0",
236+
},
237+
{
238+
ID: "foopackager2:[email protected] - My Board Pro",
239+
JSONPointer: "/packages/1/platforms/2/boards/1",
240+
},
157241
},
158242
packageIndexToolsAssertion: assert.NotNil,
159243
packageIndexToolsDataAssertion: []PackageIndexData{
@@ -230,6 +314,53 @@ func TestInitializeForPackageIndex(t *testing.T) {
230314
ID: "/packages/1/platforms/1",
231315
JSONPointer: "/packages/1/platforms/1",
232316
},
317+
{
318+
ID: "foopackager2:[email protected]",
319+
JSONPointer: "/packages/1/platforms/2",
320+
},
321+
},
322+
packageIndexBoardsAssertion: assert.NotNil,
323+
packageIndexBoardsDataAssertion: []PackageIndexData{
324+
{
325+
ID: "/packages/0/platforms/0/boards/0",
326+
JSONPointer: "/packages/0/platforms/0/boards/0",
327+
},
328+
{
329+
ID: "/packages/0/platforms/0/boards/1",
330+
JSONPointer: "/packages/0/platforms/0/boards/1",
331+
},
332+
{
333+
ID: "/packages/0/platforms/1/boards/0",
334+
JSONPointer: "/packages/0/platforms/1/boards/0",
335+
},
336+
{
337+
ID: "/packages/0/platforms/1/boards/1",
338+
JSONPointer: "/packages/0/platforms/1/boards/1",
339+
},
340+
{
341+
ID: "/packages/1/platforms/0/boards/0",
342+
JSONPointer: "/packages/1/platforms/0/boards/0",
343+
},
344+
{
345+
ID: "/packages/1/platforms/0/boards/1",
346+
JSONPointer: "/packages/1/platforms/0/boards/1",
347+
},
348+
{
349+
ID: "/packages/1/platforms/1/boards/0",
350+
JSONPointer: "/packages/1/platforms/1/boards/0",
351+
},
352+
{
353+
ID: "/packages/1/platforms/1/boards/1",
354+
JSONPointer: "/packages/1/platforms/1/boards/1",
355+
},
356+
{
357+
ID: "/packages/1/platforms/2/boards/0",
358+
JSONPointer: "/packages/1/platforms/2/boards/0",
359+
},
360+
{
361+
ID: "foopackager2:[email protected] - My Board Pro",
362+
JSONPointer: "/packages/1/platforms/2/boards/1",
363+
},
233364
},
234365
packageIndexToolsAssertion: assert.NotNil,
235366
packageIndexToolsDataAssertion: []PackageIndexData{
@@ -279,6 +410,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
279410
packageIndexCLILoadErrorAssertion: assert.NotNil,
280411
packageIndexPackagesAssertion: assert.Nil,
281412
packageIndexPlatformsAssertion: assert.Nil,
413+
packageIndexBoardsAssertion: assert.Nil,
282414
packageIndexToolsAssertion: assert.Nil,
283415
packageIndexSystemsAssertion: assert.Nil,
284416
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -291,6 +423,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
291423
packageIndexCLILoadErrorAssertion: assert.NotNil,
292424
packageIndexPackagesAssertion: assert.Nil,
293425
packageIndexPlatformsAssertion: assert.Nil,
426+
packageIndexBoardsAssertion: assert.Nil,
294427
packageIndexToolsAssertion: assert.Nil,
295428
packageIndexSystemsAssertion: assert.Nil,
296429
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -328,6 +461,14 @@ func TestInitializeForPackageIndex(t *testing.T) {
328461
}
329462
}
330463

464+
testTable.packageIndexBoardsAssertion(t, PackageIndexBoards(), testTable.testName)
465+
if PackageIndexBoards() != nil {
466+
for index, packageIndexBoard := range PackageIndexBoards() {
467+
assert.Equal(t, testTable.packageIndexBoardsDataAssertion[index].ID, packageIndexBoard.ID, testTable.testName)
468+
assert.Equal(t, testTable.packageIndexBoardsDataAssertion[index].JSONPointer, packageIndexBoard.JSONPointer, testTable.testName)
469+
}
470+
}
471+
331472
testTable.packageIndexToolsAssertion(t, PackageIndexTools(), testTable.testName)
332473
if PackageIndexTools() != nil {
333474
for index, packageIndexTool := range PackageIndexTools() {

Diff for: internal/project/projectdata/testdata/packageindexes/empty-ids/package_foo_index.json

+26
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,32 @@
124124
"version": "6.0.1-arduino5"
125125
}
126126
]
127+
},
128+
{
129+
"name": "My Board",
130+
"architecture": "megaavr",
131+
"version": "1.0.0",
132+
"category": "Contributed",
133+
"help": {
134+
"online": "http://example.com/forum/myboard"
135+
},
136+
"url": "https://janedeveloper.github.io/myboard/myboard-1.0.1.zip",
137+
"archiveFileName": "myboard-1.0.1.zip",
138+
"checksum": "SHA-256:9c86ee28a7ce9fe33e8b07ec643316131e0031b0d22e63bb398902a5fdadbca9",
139+
"size": "15125",
140+
"boards": [{ "name": "" }, { "name": "My Board Pro" }],
141+
"toolsDependencies": [
142+
{
143+
"packager": "arduino",
144+
"name": "avr-gcc",
145+
"version": "4.8.1-arduino5"
146+
},
147+
{
148+
"packager": "arduino",
149+
"name": "avrdude",
150+
"version": "6.0.1-arduino5"
151+
}
152+
]
127153
}
128154
],
129155
"tools": [

Diff for: internal/project/projectdata/testdata/packageindexes/missing-ids/package_foo_index.json

+26
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,32 @@
121121
"version": "6.0.1-arduino5"
122122
}
123123
]
124+
},
125+
{
126+
"name": "My Board",
127+
"architecture": "megaavr",
128+
"version": "1.0.0",
129+
"category": "Contributed",
130+
"help": {
131+
"online": "http://example.com/forum/myboard"
132+
},
133+
"url": "https://janedeveloper.github.io/myboard/myboard-1.0.1.zip",
134+
"archiveFileName": "myboard-1.0.1.zip",
135+
"checksum": "SHA-256:9c86ee28a7ce9fe33e8b07ec643316131e0031b0d22e63bb398902a5fdadbca9",
136+
"size": "15125",
137+
"boards": [{ "foo": "My Board" }, { "name": "My Board Pro" }],
138+
"toolsDependencies": [
139+
{
140+
"packager": "arduino",
141+
"name": "avr-gcc",
142+
"version": "4.8.1-arduino5"
143+
},
144+
{
145+
"packager": "arduino",
146+
"name": "avrdude",
147+
"version": "6.0.1-arduino5"
148+
}
149+
]
124150
}
125151
],
126152
"tools": [

0 commit comments

Comments
 (0)