Skip to content

Commit 447d7cd

Browse files
committed
Provide natively loaded data as package index project data
Arduino CLI's package index loading function can can be useful in its current capacity as a general check on the validity of the package index as far as Arduino CLI is concerned, used for that purpose by a single dedicated rule. However, it can not be used as a data source for other rules because Arduino CLI should attempt to be resilient to bad data when possible, while Arduino Lint needs to detect the very bad data that Arduino CLI might correct. So the data from the native loading code must be used in all rules, while the value from Arduino CLI's load is solely in whether or not it returned an error.
1 parent 0c3b358 commit 447d7cd

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

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

+15-6
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,35 @@
1616
package projectdata
1717

1818
import (
19-
"github.com/arduino/arduino-cli/arduino/cores/packageindex"
19+
clipackageindex "github.com/arduino/arduino-cli/arduino/cores/packageindex"
20+
"github.com/arduino/arduino-lint/internal/project/packageindex"
2021
)
2122

2223
// InitializeForPackageIndex gathers the package index rule data for the specified project.
2324
func InitializeForPackageIndex() {
25+
packageIndex, packageIndexLoadError = packageindex.Properties(ProjectPath())
2426
if ProjectPath() != nil {
25-
packageIndex, packageIndexLoadError = packageindex.LoadIndex(ProjectPath())
27+
_, packageIndexCLILoadError = clipackageindex.LoadIndex(ProjectPath())
2628
}
2729
}
2830

29-
var packageIndex *packageindex.Index
31+
var packageIndex map[string]interface{}
3032

31-
// PackageIndex returns the packageindex.Index object generated by Arduino CLI.
32-
func PackageIndex() *packageindex.Index {
33+
// PackageIndex returns the package index data.
34+
func PackageIndex() map[string]interface{} {
3335
return packageIndex
3436
}
3537

3638
var packageIndexLoadError error
3739

38-
// PackageIndexLoadError returns the error return of packageindex.LoadIndex().
40+
// PackageIndexLoadError returns the error from loading the package index.
3941
func PackageIndexLoadError() error {
4042
return packageIndexLoadError
4143
}
44+
45+
var packageIndexCLILoadError error
46+
47+
// PackageIndexCLILoadError returns the error return of Arduino CLI's packageindex.LoadIndex().
48+
func PackageIndexCLILoadError() error {
49+
return packageIndexCLILoadError
50+
}

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

+9-7
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,15 @@ 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
39+
testName string
40+
path *paths.Path
41+
packageIndexAssertion assert.ValueAssertionFunc
42+
packageIndexLoadErrorAssertion assert.ValueAssertionFunc
43+
packageIndexCLILoadErrorAssertion assert.ValueAssertionFunc
4344
}{
44-
{"Valid", packageIndexTestDataPath.Join("valid-package-index", "package_foo_index.json"), assert.NotNil, assert.Nil},
45-
{"Invalid package index", packageIndexTestDataPath.Join("invalid-package-index", "package_foo_index.json"), assert.Nil, assert.NotNil},
46-
{"Invalid JSON", packageIndexTestDataPath.Join("invalid-JSON", "package_foo_index.json"), assert.Nil, assert.NotNil},
45+
{"Valid", packageIndexTestDataPath.Join("valid-package-index", "package_foo_index.json"), assert.NotNil, assert.Nil, assert.Nil},
46+
{"Invalid package index", packageIndexTestDataPath.Join("invalid-package-index", "package_foo_index.json"), assert.Nil, assert.NotNil, assert.NotNil},
47+
{"Invalid JSON", packageIndexTestDataPath.Join("invalid-JSON", "package_foo_index.json"), assert.Nil, assert.NotNil, assert.NotNil},
4748
}
4849

4950
for _, testTable := range testTables {
@@ -56,6 +57,7 @@ func TestInitializeForPackageIndex(t *testing.T) {
5657
Initialize(testProject)
5758

5859
testTable.packageIndexLoadErrorAssertion(t, PackageIndexLoadError(), testTable.testName)
60+
testTable.packageIndexCLILoadErrorAssertion(t, PackageIndexCLILoadError(), testTable.testName)
5961
if PackageIndexLoadError() == nil {
6062
testTable.packageIndexAssertion(t, PackageIndex(), testTable.testName)
6163
}

Diff for: internal/rule/rulefunction/packageindex.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ func PackageIndexFormat() (result ruleresult.Type, output string) {
7777
return ruleresult.NotRun, "Package index not found"
7878
}
7979

80-
if projectdata.PackageIndexLoadError() != nil {
81-
return ruleresult.Fail, projectdata.PackageIndexLoadError().Error()
80+
if projectdata.PackageIndexCLILoadError() != nil {
81+
return ruleresult.Fail, projectdata.PackageIndexCLILoadError().Error()
8282
}
8383

8484
return ruleresult.Pass, ""

0 commit comments

Comments
 (0)