Skip to content

Commit ec2851f

Browse files
committed
Add schema-based rules for monitor dependencies data of package index
These are the JSON schema-based rules to check the `packages[].platforms[].monitorDependencies[]`-level data of the Arduino Package Index.
1 parent 090eb85 commit ec2851f

File tree

16 files changed

+934
-0
lines changed

16 files changed

+934
-0
lines changed

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

+9
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func InitializeForPackageIndex() {
4646
packageIndexBoards = nil
4747
packageIndexToolsDependencies = nil
4848
packageIndexDiscoveryDependencies = nil
49+
packageIndexMonitorDependencies = nil
4950
packageIndexTools = nil
5051
packageIndexSystems = nil
5152
packageIndexSchemaValidationResult = nil
@@ -61,6 +62,7 @@ func InitializeForPackageIndex() {
6162
packageIndexBoards = append(packageIndexBoards, getPackageIndexData(platformData.Object, platformData.JSONPointer, "boards", platformData.ID, " >> {{index . 0}}", []string{"name"})...)
6263
packageIndexToolsDependencies = append(packageIndexToolsDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "toolsDependencies", platformData.ID, " >> {{index . 0}}:{{index . 1}}@{{index . 2}}", []string{"packager", "name", "version"})...)
6364
packageIndexDiscoveryDependencies = append(packageIndexDiscoveryDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "discoveryDependencies", platformData.ID, " >> {{index . 0}}:{{index . 1}}", []string{"packager", "name"})...)
65+
packageIndexMonitorDependencies = append(packageIndexMonitorDependencies, getPackageIndexData(platformData.Object, platformData.JSONPointer, "monitorDependencies", platformData.ID, " >> {{index . 0}}:{{index . 1}}", []string{"packager", "name"})...)
6466
}
6567

6668
for _, toolData := range PackageIndexTools() {
@@ -127,6 +129,13 @@ func PackageIndexDiscoveryDependencies() []PackageIndexData {
127129
return packageIndexDiscoveryDependencies
128130
}
129131

132+
var packageIndexMonitorDependencies []PackageIndexData
133+
134+
// PackageIndexMonitorDependencies returns the slice of pluggable monitor tool dependency data for the package index.
135+
func PackageIndexMonitorDependencies() []PackageIndexData {
136+
return packageIndexMonitorDependencies
137+
}
138+
130139
var packageIndexTools []PackageIndexData
131140

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

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

+129
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ func TestInitializeForPackageIndex(t *testing.T) {
5252
packageIndexToolsDependenciesDataAssertion []PackageIndexData
5353
packageIndexDiscoveryDependenciesAssertion assert.ValueAssertionFunc
5454
packageIndexDiscoveryDependenciesDataAssertion []PackageIndexData
55+
packageIndexMonitorDependenciesAssertion assert.ValueAssertionFunc
56+
packageIndexMonitorDependenciesDataAssertion []PackageIndexData
5557
packageIndexToolsAssertion assert.ValueAssertionFunc
5658
packageIndexToolsDataAssertion []PackageIndexData
5759
packageIndexSystemsAssertion assert.ValueAssertionFunc
@@ -187,6 +189,29 @@ func TestInitializeForPackageIndex(t *testing.T) {
187189
JSONPointer: "/packages/1/platforms/1/discoveryDependencies/0",
188190
},
189191
},
192+
packageIndexMonitorDependenciesAssertion: assert.NotNil,
193+
packageIndexMonitorDependenciesDataAssertion: []PackageIndexData{
194+
{
195+
ID: "foopackager1:[email protected] >> arduino:network-monitor",
196+
JSONPointer: "/packages/0/platforms/1/monitorDependencies/0",
197+
},
198+
{
199+
ID: "foopackager1:[email protected] >> barpackager:coop-monitor",
200+
JSONPointer: "/packages/0/platforms/1/monitorDependencies/1",
201+
},
202+
{
203+
ID: "foopackager2:[email protected] >> arduino:network-monitor",
204+
JSONPointer: "/packages/1/platforms/0/monitorDependencies/0",
205+
},
206+
{
207+
ID: "foopackager2:[email protected] >> bazpackager:flag-monitor",
208+
JSONPointer: "/packages/1/platforms/0/monitorDependencies/1",
209+
},
210+
{
211+
ID: "foopackager2:[email protected] >> quxpackager:shoe-monitor",
212+
JSONPointer: "/packages/1/platforms/1/monitorDependencies/0",
213+
},
214+
},
190215
packageIndexToolsAssertion: assert.NotNil,
191216
packageIndexToolsDataAssertion: []PackageIndexData{
192217
{
@@ -400,6 +425,53 @@ func TestInitializeForPackageIndex(t *testing.T) {
400425
JSONPointer: "/packages/1/platforms/2/discoveryDependencies/2",
401426
},
402427
},
428+
packageIndexMonitorDependenciesAssertion: assert.NotNil,
429+
packageIndexMonitorDependenciesDataAssertion: []PackageIndexData{
430+
{
431+
ID: "/packages/0/platforms/0/monitorDependencies/0",
432+
JSONPointer: "/packages/0/platforms/0/monitorDependencies/0",
433+
},
434+
{
435+
ID: "/packages/0/platforms/0/monitorDependencies/1",
436+
JSONPointer: "/packages/0/platforms/0/monitorDependencies/1",
437+
},
438+
{
439+
ID: "/packages/0/platforms/1/monitorDependencies/0",
440+
JSONPointer: "/packages/0/platforms/1/monitorDependencies/0",
441+
},
442+
{
443+
ID: "/packages/0/platforms/1/monitorDependencies/1",
444+
JSONPointer: "/packages/0/platforms/1/monitorDependencies/1",
445+
},
446+
{
447+
ID: "/packages/1/platforms/0/monitorDependencies/0",
448+
JSONPointer: "/packages/1/platforms/0/monitorDependencies/0",
449+
},
450+
{
451+
ID: "/packages/1/platforms/0/monitorDependencies/1",
452+
JSONPointer: "/packages/1/platforms/0/monitorDependencies/1",
453+
},
454+
{
455+
ID: "/packages/1/platforms/1/monitorDependencies/0",
456+
JSONPointer: "/packages/1/platforms/1/monitorDependencies/0",
457+
},
458+
{
459+
ID: "/packages/1/platforms/1/monitorDependencies/1",
460+
JSONPointer: "/packages/1/platforms/1/monitorDependencies/1",
461+
},
462+
{
463+
ID: "/packages/1/platforms/2/monitorDependencies/0",
464+
JSONPointer: "/packages/1/platforms/2/monitorDependencies/0",
465+
},
466+
{
467+
ID: "/packages/1/platforms/2/monitorDependencies/1",
468+
JSONPointer: "/packages/1/platforms/2/monitorDependencies/1",
469+
},
470+
{
471+
ID: "foopackager2:[email protected] >> quxpackager:shoe-monitor",
472+
JSONPointer: "/packages/1/platforms/2/monitorDependencies/2",
473+
},
474+
},
403475
packageIndexToolsAssertion: assert.NotNil,
404476
packageIndexToolsDataAssertion: []PackageIndexData{
405477
{
@@ -621,6 +693,53 @@ func TestInitializeForPackageIndex(t *testing.T) {
621693
JSONPointer: "/packages/1/platforms/2/discoveryDependencies/2",
622694
},
623695
},
696+
packageIndexMonitorDependenciesAssertion: assert.NotNil,
697+
packageIndexMonitorDependenciesDataAssertion: []PackageIndexData{
698+
{
699+
ID: "/packages/0/platforms/0/monitorDependencies/0",
700+
JSONPointer: "/packages/0/platforms/0/monitorDependencies/0",
701+
},
702+
{
703+
ID: "/packages/0/platforms/0/monitorDependencies/1",
704+
JSONPointer: "/packages/0/platforms/0/monitorDependencies/1",
705+
},
706+
{
707+
ID: "/packages/0/platforms/1/monitorDependencies/0",
708+
JSONPointer: "/packages/0/platforms/1/monitorDependencies/0",
709+
},
710+
{
711+
ID: "/packages/0/platforms/1/monitorDependencies/1",
712+
JSONPointer: "/packages/0/platforms/1/monitorDependencies/1",
713+
},
714+
{
715+
ID: "/packages/1/platforms/0/monitorDependencies/0",
716+
JSONPointer: "/packages/1/platforms/0/monitorDependencies/0",
717+
},
718+
{
719+
ID: "/packages/1/platforms/0/monitorDependencies/1",
720+
JSONPointer: "/packages/1/platforms/0/monitorDependencies/1",
721+
},
722+
{
723+
ID: "/packages/1/platforms/1/monitorDependencies/0",
724+
JSONPointer: "/packages/1/platforms/1/monitorDependencies/0",
725+
},
726+
{
727+
ID: "/packages/1/platforms/1/monitorDependencies/1",
728+
JSONPointer: "/packages/1/platforms/1/monitorDependencies/1",
729+
},
730+
{
731+
ID: "/packages/1/platforms/2/monitorDependencies/0",
732+
JSONPointer: "/packages/1/platforms/2/monitorDependencies/0",
733+
},
734+
{
735+
ID: "/packages/1/platforms/2/monitorDependencies/1",
736+
JSONPointer: "/packages/1/platforms/2/monitorDependencies/1",
737+
},
738+
{
739+
ID: "foopackager2:[email protected] >> quxpackager:shoe-monitor",
740+
JSONPointer: "/packages/1/platforms/2/monitorDependencies/2",
741+
},
742+
},
624743
packageIndexToolsAssertion: assert.NotNil,
625744
packageIndexToolsDataAssertion: []PackageIndexData{
626745
{
@@ -672,6 +791,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
672791
packageIndexBoardsAssertion: assert.Nil,
673792
packageIndexToolsDependenciesAssertion: assert.Nil,
674793
packageIndexDiscoveryDependenciesAssertion: assert.Nil,
794+
packageIndexMonitorDependenciesAssertion: assert.Nil,
675795
packageIndexToolsAssertion: assert.Nil,
676796
packageIndexSystemsAssertion: assert.Nil,
677797
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -687,6 +807,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
687807
packageIndexBoardsAssertion: assert.Nil,
688808
packageIndexToolsDependenciesAssertion: assert.Nil,
689809
packageIndexDiscoveryDependenciesAssertion: assert.Nil,
810+
packageIndexMonitorDependenciesAssertion: assert.Nil,
690811
packageIndexToolsAssertion: assert.Nil,
691812
packageIndexSystemsAssertion: assert.Nil,
692813
packageIndexSchemaValidationResultAssertion: assert.Nil,
@@ -748,6 +869,14 @@ func TestInitializeForPackageIndex(t *testing.T) {
748869
}
749870
}
750871

872+
testTable.packageIndexMonitorDependenciesAssertion(t, PackageIndexMonitorDependencies(), testTable.testName)
873+
if PackageIndexMonitorDependencies() != nil {
874+
for index, packageIndexMonitorDependency := range PackageIndexMonitorDependencies() {
875+
assert.Equal(t, testTable.packageIndexMonitorDependenciesDataAssertion[index].ID, packageIndexMonitorDependency.ID, testTable.testName)
876+
assert.Equal(t, testTable.packageIndexMonitorDependenciesDataAssertion[index].JSONPointer, packageIndexMonitorDependency.JSONPointer, testTable.testName)
877+
}
878+
}
879+
751880
testTable.packageIndexToolsAssertion(t, PackageIndexTools(), testTable.testName)
752881
if PackageIndexTools() != nil {
753882
for index, packageIndexTool := range PackageIndexTools() {

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

+52
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@
4343
"packager": "barpackager",
4444
"name": "carrier-pigeon-discovery"
4545
}
46+
],
47+
"monitorDependencies": [
48+
{
49+
"packager": "arduino",
50+
"name": "network-monitor"
51+
},
52+
{
53+
"packager": "barpackager",
54+
"name": "coop-monitor"
55+
}
4656
]
4757
},
4858
{
@@ -79,6 +89,16 @@
7989
"packager": "barpackager",
8090
"name": "carrier-pigeon-discovery"
8191
}
92+
],
93+
"monitorDependencies": [
94+
{
95+
"packager": "arduino",
96+
"name": "network-monitor"
97+
},
98+
{
99+
"packager": "barpackager",
100+
"name": "coop-monitor"
101+
}
82102
]
83103
}
84104
],
@@ -127,6 +147,16 @@
127147
"packager": "bazpackager",
128148
"name": "signal-flag-discovery"
129149
}
150+
],
151+
"monitorDependencies": [
152+
{
153+
"packager": "arduino",
154+
"name": "network-monitor"
155+
},
156+
{
157+
"packager": "bazpackager",
158+
"name": "flag-monitor"
159+
}
130160
]
131161
},
132162
{
@@ -163,6 +193,16 @@
163193
"packager": "bazpackager",
164194
"name": "signal-flag-discovery"
165195
}
196+
],
197+
"monitorDependencies": [
198+
{
199+
"packager": "arduino",
200+
"name": "network-monitor"
201+
},
202+
{
203+
"packager": "bazpackager",
204+
"name": "flag-monitor"
205+
}
166206
]
167207
},
168208
{
@@ -211,6 +251,18 @@
211251
"packager": "quxpackager",
212252
"name": "sneakernet-discovery"
213253
}
254+
],
255+
"monitorDependencies": [
256+
{
257+
"name": "network-monitor"
258+
},
259+
{
260+
"packager": "bazpackager"
261+
},
262+
{
263+
"packager": "quxpackager",
264+
"name": "shoe-monitor"
265+
}
214266
]
215267
}
216268
],

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

+52
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@
4242
"packager": "barpackager",
4343
"name": "carrier-pigeon-discovery"
4444
}
45+
],
46+
"monitorDependencies": [
47+
{
48+
"packager": "arduino",
49+
"name": "network-monitor"
50+
},
51+
{
52+
"packager": "barpackager",
53+
"name": "coop-monitor"
54+
}
4555
]
4656
},
4757
{
@@ -78,6 +88,16 @@
7888
"packager": "barpackager",
7989
"name": "carrier-pigeon-discovery"
8090
}
91+
],
92+
"monitorDependencies": [
93+
{
94+
"packager": "arduino",
95+
"name": "network-monitor"
96+
},
97+
{
98+
"packager": "barpackager",
99+
"name": "coop-monitor"
100+
}
81101
]
82102
}
83103
],
@@ -125,6 +145,16 @@
125145
"packager": "bazpackager",
126146
"name": "signal-flag-discovery"
127147
}
148+
],
149+
"monitorDependencies": [
150+
{
151+
"packager": "arduino",
152+
"name": "network-monitor"
153+
},
154+
{
155+
"packager": "bazpackager",
156+
"name": "flag-monitor"
157+
}
128158
]
129159
},
130160
{
@@ -160,6 +190,16 @@
160190
"packager": "bazpackager",
161191
"name": "signal-flag-discovery"
162192
}
193+
],
194+
"monitorDependencies": [
195+
{
196+
"packager": "arduino",
197+
"name": "network-monitor"
198+
},
199+
{
200+
"packager": "bazpackager",
201+
"name": "flag-monitor"
202+
}
163203
]
164204
},
165205
{
@@ -205,6 +245,18 @@
205245
"packager": "quxpackager",
206246
"name": "sneakernet-discovery"
207247
}
248+
],
249+
"monitorDependencies": [
250+
{
251+
"name": "network-monitor"
252+
},
253+
{
254+
"packager": "bazpackager"
255+
},
256+
{
257+
"packager": "quxpackager",
258+
"name": "shoe-monitor"
259+
}
208260
]
209261
}
210262
],

0 commit comments

Comments
 (0)