Skip to content

Commit 41f069b

Browse files
committed
Fix duplicated 'depends' field check
1 parent e2ef366 commit 41f069b

File tree

3 files changed

+16
-19
lines changed

3 files changed

+16
-19
lines changed

src/arduino.cc/repository/libraries/db/dependencies_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,19 @@ import (
88

99
func TestDependencyExtract(t *testing.T) {
1010
check := func(depDefinition string, name []string, ver []string) {
11-
dep := extractDependenciesList(depDefinition)
11+
dep, err := ExtractDependenciesList(depDefinition)
12+
require.NoError(t, err)
1213
require.NotNil(t, dep)
1314
require.Len(t, dep, len(name))
1415
for i := range name {
1516
require.Equal(t, name[i], dep[i].Name)
1617
require.Equal(t, ver[i], dep[i].Version)
1718
}
1819
}
19-
invalid := func(dep string) {
20-
require.Nil(t, extractDependenciesList(dep))
20+
invalid := func(depends string) {
21+
dep, err := ExtractDependenciesList(depends)
22+
require.Nil(t, dep)
23+
require.Error(t, err)
2124
}
2225
invalid("-invalidname")
2326
invalid("_invalidname")

src/arduino.cc/repository/libraries/db/library.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
// FromLibraryToRelease extract a Release from LibraryMetadata. LibraryMetadata must be
1212
// validated before running this function.
1313
func FromLibraryToRelease(library *metadata.LibraryMetadata) *Release {
14+
deps, _ := ExtractDependenciesList(library.Depends)
1415
dbRelease := Release{
1516
LibraryName: library.Name,
1617
Version: VersionFromString(library.Version),
@@ -24,7 +25,7 @@ func FromLibraryToRelease(library *metadata.LibraryMetadata) *Release {
2425
Architectures: extractStringList(library.Architectures),
2526
Types: library.Types,
2627
Includes: extractStringList(library.Includes),
27-
Dependencies: extractDependenciesList(library.Depends),
28+
Dependencies: deps,
2829
}
2930

3031
return &dbRelease
@@ -44,7 +45,8 @@ func extractStringList(value string) []string {
4445

4546
var re = regexp.MustCompile("^([a-zA-Z0-9](?:[a-zA-Z0-9._\\- ]*[a-zA-Z0-9])?) *(?: \\(([^()]*)\\))?$")
4647

47-
func extractDependenciesList(depends string) []*Dependency {
48+
// ExtractDependenciesList extracts dependencies from the "depends" field of library.properties
49+
func ExtractDependenciesList(depends string) ([]*Dependency, error) {
4850
deps := []*Dependency{}
4951
for _, dep := range strings.Split(depends, ",") {
5052
dep = strings.TrimSpace(dep)
@@ -53,13 +55,12 @@ func extractDependenciesList(depends string) []*Dependency {
5355
}
5456
matches := re.FindAllStringSubmatch(dep, -1)
5557
if matches == nil {
56-
fmt.Println("invalid dep:", dep)
57-
return nil
58+
return nil, fmt.Errorf("invalid dep: %s", dep)
5859
}
5960
deps = append(deps, &Dependency{
6061
Name: matches[0][1],
6162
Version: matches[0][2],
6263
})
6364
}
64-
return deps
65+
return deps, nil
6566
}

src/arduino.cc/repository/libraries/metadata/metadata.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import (
1919
"errors"
2020
"strings"
2121

22+
"arduino.cc/repository/libraries/db"
23+
2224
"github.com/google/go-github/github"
2325
ini "github.com/vaughan0/go-ini"
2426
)
@@ -123,17 +125,8 @@ func IsValidLibraryName(name string) bool {
123125

124126
// IsValidDependency checks if the `depends` field of library.properties is correctly formatted
125127
func IsValidDependency(depends string) bool {
126-
deps := strings.Split(depends, ",")
127-
if len(deps) == 1 && deps[0] == "" {
128-
return true
129-
}
130-
for _, dep := range deps {
131-
dep = strings.TrimSpace(dep)
132-
if !IsValidLibraryName(dep) {
133-
return false
134-
}
135-
}
136-
return true
128+
_, err := db.ExtractDependenciesList(depends)
129+
return err == nil
137130
}
138131

139132
// ParsePullRequest makes a LibraryMetadata by reading library.properties from a github.PullRequest

0 commit comments

Comments
 (0)