Skip to content

Commit d2fc80e

Browse files
committed
Provide object-level packages[].platforms[].toolsDependencies[] package index data to rules
Data checking rules for package indexes need to iterate over its object-level components. To facilitate this, slices of such objects accompanied by the necessary metadata are generated as package index project data. This was already done for packages, platforms, boards, and tools, but not for tools dependencies.
1 parent a9792b0 commit d2fc80e

File tree

2 files changed

+161
-0
lines changed

2 files changed

+161
-0
lines changed

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

+12
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ func InitializeForPackageIndex() {
4343
packageIndexPackages = nil
4444
packageIndexPlatforms = nil
4545
packageIndexBoards = nil
46+
packageIndexToolsDependencies = nil
4647
packageIndexTools = nil
4748
packageIndexSystems = nil
4849
packageIndexSchemaValidationResult = nil
@@ -57,6 +58,10 @@ func InitializeForPackageIndex() {
5758
packageIndexBoards = append(packageIndexBoards, getPackageIndexData(platformData.Object, platformData.JSONPointer, "boards", platformData.ID, " - {{index . 0}}", []string{"name"})...)
5859
}
5960

61+
for _, platformData := range PackageIndexPlatforms() {
62+
packageIndexToolsDependencies = append(packageIndexToolsDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "toolsDependencies", platformData.ID, " - {{index . 0}}:{{index . 1}}@{{index . 2}}", []string{"packager", "name", "version"})...)
63+
}
64+
6065
for _, packageData := range PackageIndexPackages() {
6166
packageIndexTools = append(packageIndexTools, getPackageIndexData(packageData.Object, packageData.JSONPointer, "tools", packageData.ID, ":{{index . 0}}@{{index . 1}}", []string{"name", "version"})...)
6267
}
@@ -111,6 +116,13 @@ func PackageIndexBoards() []PackageIndexData {
111116
return packageIndexBoards
112117
}
113118

119+
var packageIndexToolsDependencies []PackageIndexData
120+
121+
// PackageIndexToolsDependencies returns the slice of tool dependency data for the package index.
122+
func PackageIndexToolsDependencies() []PackageIndexData {
123+
return packageIndexToolsDependencies
124+
}
125+
114126
var packageIndexTools []PackageIndexData
115127

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

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

+149
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ func TestInitializeForPackageIndex(t *testing.T) {
4747
packageIndexPlatformsDataAssertion []PackageIndexData
4848
packageIndexBoardsAssertion assert.ValueAssertionFunc
4949
packageIndexBoardsDataAssertion []PackageIndexData
50+
packageIndexToolsDependenciesAssertion assert.ValueAssertionFunc
51+
packageIndexToolsDependenciesDataAssertion []PackageIndexData
5052
packageIndexToolsAssertion assert.ValueAssertionFunc
5153
packageIndexToolsDataAssertion []PackageIndexData
5254
packageIndexSystemsAssertion assert.ValueAssertionFunc
@@ -124,6 +126,41 @@ func TestInitializeForPackageIndex(t *testing.T) {
124126
JSONPointer: "/packages/1/platforms/1/boards/1",
125127
},
126128
},
129+
packageIndexToolsDependenciesAssertion: assert.NotNil,
130+
packageIndexToolsDependenciesDataAssertion: []PackageIndexData{
131+
{
132+
ID: "foopackager1:[email protected] - arduino:[email protected]",
133+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/0",
134+
},
135+
{
136+
ID: "foopackager1:[email protected] - arduino:[email protected]",
137+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/1",
138+
},
139+
{
140+
ID: "foopackager1:[email protected] - arduino:[email protected]",
141+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/0",
142+
},
143+
{
144+
ID: "foopackager1:[email protected] - arduino:[email protected]",
145+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/1",
146+
},
147+
{
148+
ID: "foopackager2:[email protected] - arduino:arm-none-eabi-gcc@7-2017q4",
149+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/0",
150+
},
151+
{
152+
ID: "foopackager2:[email protected] - arduino:[email protected]",
153+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/1",
154+
},
155+
{
156+
ID: "foopackager2:[email protected] - arduino:[email protected]",
157+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/0",
158+
},
159+
{
160+
ID: "foopackager2:[email protected] - arduino:arm-none-eabi-gcc@7-2017q4",
161+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/1",
162+
},
163+
},
127164
packageIndexToolsAssertion: assert.NotNil,
128165
packageIndexToolsDataAssertion: []PackageIndexData{
129166
{
@@ -239,6 +276,57 @@ func TestInitializeForPackageIndex(t *testing.T) {
239276
JSONPointer: "/packages/1/platforms/2/boards/1",
240277
},
241278
},
279+
packageIndexToolsDependenciesAssertion: assert.NotNil,
280+
packageIndexToolsDependenciesDataAssertion: []PackageIndexData{
281+
{
282+
ID: "/packages/0/platforms/0/toolsDependencies/0",
283+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/0",
284+
},
285+
{
286+
ID: "/packages/0/platforms/0/toolsDependencies/1",
287+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/1",
288+
},
289+
{
290+
ID: "/packages/0/platforms/1/toolsDependencies/0",
291+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/0",
292+
},
293+
{
294+
ID: "/packages/0/platforms/1/toolsDependencies/1",
295+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/1",
296+
},
297+
{
298+
ID: "/packages/1/platforms/0/toolsDependencies/0",
299+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/0",
300+
},
301+
{
302+
ID: "/packages/1/platforms/0/toolsDependencies/1",
303+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/1",
304+
},
305+
{
306+
ID: "/packages/1/platforms/1/toolsDependencies/0",
307+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/0",
308+
},
309+
{
310+
ID: "/packages/1/platforms/1/toolsDependencies/1",
311+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/1",
312+
},
313+
{
314+
ID: "/packages/1/platforms/2/toolsDependencies/0",
315+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/0",
316+
},
317+
{
318+
ID: "/packages/1/platforms/2/toolsDependencies/1",
319+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/1",
320+
},
321+
{
322+
ID: "/packages/1/platforms/2/toolsDependencies/2",
323+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/2",
324+
},
325+
{
326+
ID: "foopackager2:[email protected] - arduino:[email protected]",
327+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/3",
328+
},
329+
},
242330
packageIndexToolsAssertion: assert.NotNil,
243331
packageIndexToolsDataAssertion: []PackageIndexData{
244332
{
@@ -362,6 +450,57 @@ func TestInitializeForPackageIndex(t *testing.T) {
362450
JSONPointer: "/packages/1/platforms/2/boards/1",
363451
},
364452
},
453+
packageIndexToolsDependenciesAssertion: assert.NotNil,
454+
packageIndexToolsDependenciesDataAssertion: []PackageIndexData{
455+
{
456+
ID: "/packages/0/platforms/0/toolsDependencies/0",
457+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/0",
458+
},
459+
{
460+
ID: "/packages/0/platforms/0/toolsDependencies/1",
461+
JSONPointer: "/packages/0/platforms/0/toolsDependencies/1",
462+
},
463+
{
464+
ID: "/packages/0/platforms/1/toolsDependencies/0",
465+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/0",
466+
},
467+
{
468+
ID: "/packages/0/platforms/1/toolsDependencies/1",
469+
JSONPointer: "/packages/0/platforms/1/toolsDependencies/1",
470+
},
471+
{
472+
ID: "/packages/1/platforms/0/toolsDependencies/0",
473+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/0",
474+
},
475+
{
476+
ID: "/packages/1/platforms/0/toolsDependencies/1",
477+
JSONPointer: "/packages/1/platforms/0/toolsDependencies/1",
478+
},
479+
{
480+
ID: "/packages/1/platforms/1/toolsDependencies/0",
481+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/0",
482+
},
483+
{
484+
ID: "/packages/1/platforms/1/toolsDependencies/1",
485+
JSONPointer: "/packages/1/platforms/1/toolsDependencies/1",
486+
},
487+
{
488+
ID: "/packages/1/platforms/2/toolsDependencies/0",
489+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/0",
490+
},
491+
{
492+
ID: "/packages/1/platforms/2/toolsDependencies/1",
493+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/1",
494+
},
495+
{
496+
ID: "/packages/1/platforms/2/toolsDependencies/2",
497+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/2",
498+
},
499+
{
500+
ID: "foopackager2:[email protected] - arduino:[email protected]",
501+
JSONPointer: "/packages/1/platforms/2/toolsDependencies/3",
502+
},
503+
},
365504
packageIndexToolsAssertion: assert.NotNil,
366505
packageIndexToolsDataAssertion: []PackageIndexData{
367506
{
@@ -411,6 +550,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
411550
packageIndexPackagesAssertion: assert.Nil,
412551
packageIndexPlatformsAssertion: assert.Nil,
413552
packageIndexBoardsAssertion: assert.Nil,
553+
packageIndexToolsDependenciesAssertion: assert.Nil,
414554
packageIndexToolsAssertion: assert.Nil,
415555
packageIndexSystemsAssertion: assert.Nil,
416556
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -424,6 +564,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
424564
packageIndexPackagesAssertion: assert.Nil,
425565
packageIndexPlatformsAssertion: assert.Nil,
426566
packageIndexBoardsAssertion: assert.Nil,
567+
packageIndexToolsDependenciesAssertion: assert.Nil,
427568
packageIndexToolsAssertion: assert.Nil,
428569
packageIndexSystemsAssertion: assert.Nil,
429570
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -469,6 +610,14 @@ func TestInitializeForPackageIndex(t *testing.T) {
469610
}
470611
}
471612

613+
testTable.packageIndexToolsDependenciesAssertion(t, PackageIndexToolsDependencies(), testTable.testName)
614+
if PackageIndexToolsDependencies() != nil {
615+
for index, packageIndexToolsDependency := range PackageIndexToolsDependencies() {
616+
assert.Equal(t, testTable.packageIndexToolsDependenciesDataAssertion[index].ID, packageIndexToolsDependency.ID, testTable.testName)
617+
assert.Equal(t, testTable.packageIndexToolsDependenciesDataAssertion[index].JSONPointer, packageIndexToolsDependency.JSONPointer, testTable.testName)
618+
}
619+
}
620+
472621
testTable.packageIndexToolsAssertion(t, PackageIndexTools(), testTable.testName)
473622
if PackageIndexTools() != nil {
474623
for index, packageIndexTool := range PackageIndexTools() {

0 commit comments

Comments
 (0)