Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

‎internal/project/projectdata/packageindex.go‎

Lines changed: 12 additions & 0 deletions
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

‎internal/project/projectdata/packageindex_test.go‎

Lines changed: 37 additions & 31 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /