Skip to content

Commit ad3f06b

Browse files
authored
Merge pull request #193 from per1234/package-index-schema-validation-results
Provide schema validation results in package index project data
2 parents d7f669b + 7a49563 commit ad3f06b

File tree

2 files changed

+49
-31
lines changed

2 files changed

+49
-31
lines changed

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

+12
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121

2222
clipackageindex "github.com/arduino/arduino-cli/arduino/cores/packageindex"
2323
"github.com/arduino/arduino-lint/internal/project/packageindex"
24+
"github.com/arduino/arduino-lint/internal/rule/schema"
25+
"github.com/arduino/arduino-lint/internal/rule/schema/compliancelevel"
2426
)
2527

2628
// PackageIndexData is the type for package index data.
@@ -41,6 +43,7 @@ func InitializeForPackageIndex() {
4143
packageIndexPlatforms = nil
4244
packageIndexTools = nil
4345
packageIndexSystems = nil
46+
packageIndexSchemaValidationResult = nil
4447
if packageIndexLoadError == nil {
4548
packageIndexPackages = getPackageIndexData(PackageIndex(), "", "packages", "", "name", "")
4649

@@ -55,6 +58,8 @@ func InitializeForPackageIndex() {
5558
for _, toolData := range PackageIndexTools() {
5659
packageIndexSystems = append(packageIndexSystems, getPackageIndexData(toolData.Object, toolData.JSONPointer, "systems", toolData.ID+" - ", "host", "")...)
5760
}
61+
62+
packageIndexSchemaValidationResult = packageindex.Validate(PackageIndex())
5863
}
5964
}
6065

@@ -107,6 +112,13 @@ func PackageIndexSystems() []PackageIndexData {
107112
return packageIndexSystems
108113
}
109114

115+
var packageIndexSchemaValidationResult map[compliancelevel.Type]schema.ValidationResult
116+
117+
// PackageIndexSchemaValidationResult returns the result of validating the package index against the JSON schema.
118+
func PackageIndexSchemaValidationResult() map[compliancelevel.Type]schema.ValidationResult {
119+
return packageIndexSchemaValidationResult
120+
}
121+
110122
func getPackageIndexData(interfaceObject map[string]interface{}, pointerPrefix string, dataKey string, iDPrefix string, iDKey string, versionKey string) []PackageIndexData {
111123
var data []PackageIndexData
112124

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

+37-31
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,20 @@ func init() {
3636

3737
func TestInitializeForPackageIndex(t *testing.T) {
3838
testTables := []struct {
39-
testName string
40-
path *paths.Path
41-
packageIndexAssertion assert.ValueAssertionFunc
42-
packageIndexLoadErrorAssertion assert.ValueAssertionFunc
43-
packageIndexCLILoadErrorAssertion assert.ValueAssertionFunc
44-
packageIndexPackagesAssertion assert.ValueAssertionFunc
45-
packageIndexPackagesDataAssertion []PackageIndexData
46-
packageIndexPlatformsAssertion assert.ValueAssertionFunc
47-
packageIndexPlatformsDataAssertion []PackageIndexData
48-
packageIndexToolsAssertion assert.ValueAssertionFunc
49-
packageIndexToolsDataAssertion []PackageIndexData
50-
packageIndexSystemsAssertion assert.ValueAssertionFunc
51-
packageIndexSystemsDataAssertion []PackageIndexData
39+
testName string
40+
path *paths.Path
41+
packageIndexAssertion assert.ValueAssertionFunc
42+
packageIndexLoadErrorAssertion assert.ValueAssertionFunc
43+
packageIndexCLILoadErrorAssertion assert.ValueAssertionFunc
44+
packageIndexPackagesAssertion assert.ValueAssertionFunc
45+
packageIndexPackagesDataAssertion []PackageIndexData
46+
packageIndexPlatformsAssertion assert.ValueAssertionFunc
47+
packageIndexPlatformsDataAssertion []PackageIndexData
48+
packageIndexToolsAssertion assert.ValueAssertionFunc
49+
packageIndexToolsDataAssertion []PackageIndexData
50+
packageIndexSystemsAssertion assert.ValueAssertionFunc
51+
packageIndexSystemsDataAssertion []PackageIndexData
52+
packageIndexSchemaValidationResultAssertion assert.ValueAssertionFunc
5253
}{
5354
{
5455
testName: "Valid",
@@ -116,6 +117,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
116117
JSONPointer: "/packages/1/tools/1/systems/1",
117118
},
118119
},
120+
packageIndexSchemaValidationResultAssertion: assert.NotNil,
119121
},
120122
{
121123
testName: "Missing IDs",
@@ -191,6 +193,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
191193
JSONPointer: "/packages/1/tools/2/systems/0",
192194
},
193195
},
196+
packageIndexSchemaValidationResultAssertion: assert.NotNil,
194197
},
195198
{
196199
testName: "Empty IDs",
@@ -266,28 +269,31 @@ func TestInitializeForPackageIndex(t *testing.T) {
266269
JSONPointer: "/packages/1/tools/2/systems/0",
267270
},
268271
},
272+
packageIndexSchemaValidationResultAssertion: assert.NotNil,
269273
},
270274
{
271-
testName: "Invalid package index",
272-
path: packageIndexTestDataPath.Join("invalid-package-index", "package_foo_index.json"),
273-
packageIndexAssertion: assert.Nil,
274-
packageIndexLoadErrorAssertion: assert.NotNil,
275-
packageIndexCLILoadErrorAssertion: assert.NotNil,
276-
packageIndexPackagesAssertion: assert.Nil,
277-
packageIndexPlatformsAssertion: assert.Nil,
278-
packageIndexToolsAssertion: assert.Nil,
279-
packageIndexSystemsAssertion: assert.Nil,
275+
testName: "Invalid package index",
276+
path: packageIndexTestDataPath.Join("invalid-package-index", "package_foo_index.json"),
277+
packageIndexAssertion: assert.Nil,
278+
packageIndexLoadErrorAssertion: assert.NotNil,
279+
packageIndexCLILoadErrorAssertion: assert.NotNil,
280+
packageIndexPackagesAssertion: assert.Nil,
281+
packageIndexPlatformsAssertion: assert.Nil,
282+
packageIndexToolsAssertion: assert.Nil,
283+
packageIndexSystemsAssertion: assert.Nil,
284+
packageIndexSchemaValidationResultAssertion: assert.Nil,
280285
},
281286
{
282-
testName: "Invalid JSON",
283-
path: packageIndexTestDataPath.Join("invalid-JSON", "package_foo_index.json"),
284-
packageIndexAssertion: assert.Nil,
285-
packageIndexLoadErrorAssertion: assert.NotNil,
286-
packageIndexCLILoadErrorAssertion: assert.NotNil,
287-
packageIndexPackagesAssertion: assert.Nil,
288-
packageIndexPlatformsAssertion: assert.Nil,
289-
packageIndexToolsAssertion: assert.Nil,
290-
packageIndexSystemsAssertion: assert.Nil,
287+
testName: "Invalid JSON",
288+
path: packageIndexTestDataPath.Join("invalid-JSON", "package_foo_index.json"),
289+
packageIndexAssertion: assert.Nil,
290+
packageIndexLoadErrorAssertion: assert.NotNil,
291+
packageIndexCLILoadErrorAssertion: assert.NotNil,
292+
packageIndexPackagesAssertion: assert.Nil,
293+
packageIndexPlatformsAssertion: assert.Nil,
294+
packageIndexToolsAssertion: assert.Nil,
295+
packageIndexSystemsAssertion: assert.Nil,
296+
packageIndexSchemaValidationResultAssertion: assert.Nil,
291297
},
292298
}
293299

0 commit comments

Comments
 (0)