diff --git a/internal/libraries/db/dependencies_test.go b/internal/libraries/db/dependencies_test.go index bff2343d..39ecc1b0 100644 --- a/internal/libraries/db/dependencies_test.go +++ b/internal/libraries/db/dependencies_test.go @@ -48,14 +48,21 @@ func TestDependencyExtract(t *testing.T) { invalid("-invalidname") invalid("_invalidname") check("ciao", []string{"ciao"}, []string{""}) + check("MyLib (>1.2.3)", []string{"MyLib"}, []string{">1.2.3"}) check("MyLib (>=1.2.3)", []string{"MyLib"}, []string{">=1.2.3"}) + check("MyLib (<1.2.3)", []string{"MyLib"}, []string{"<1.2.3"}) + check("MyLib (<=1.2.3)", []string{"MyLib"}, []string{"<=1.2.3"}) + check("MyLib (!=1.2.3)", []string{"MyLib"}, []string{"!=1.2.3"}) + check("MyLib (>1.0.0 && <2.1.0)", []string{"MyLib"}, []string{">1.0.0 && <2.1.0"}) + check("MyLib (<1.0.0 || >2.0.0)", []string{"MyLib"}, []string{"<1.0.0 || >2.0.0"}) + check("MyLib ((>0.1.0 && <2.0.0) || >2.1.0)", []string{"MyLib"}, []string{"(>0.1.0 && <2.0.0) || >2.1.0"}) + check("MyLib ()", []string{"MyLib"}, []string{""}) check("MyLib (>=1.2.3),AnotherLib, YetAnotherLib (=1.0.0)", []string{"MyLib", "AnotherLib", "YetAnotherLib"}, []string{">=1.2.3", "", "=1.0.0"}) - invalid("MyLib (>=1.2.3)()") invalid("MyLib (>=1.2.3),_aaaa") invalid("MyLib,,AnotherLib") - invalid("MyLib (>=1.2.3)(),AnotherLib, YetAnotherLib (=1.0.0)") + invalid("MyLib(=1.2.3)") check("Arduino Uno WiFi Dev Ed Library, LoRa Node (^2.1.2)", []string{"Arduino Uno WiFi Dev Ed Library", "LoRa Node"}, []string{"", "^2.1.2"}) diff --git a/internal/libraries/db/library.go b/internal/libraries/db/library.go index e9e572eb..cdcb0b73 100644 --- a/internal/libraries/db/library.go +++ b/internal/libraries/db/library.go @@ -66,7 +66,7 @@ func extractStringList(value string) []string { return res } -var re = regexp.MustCompile("^([a-zA-Z0-9](?:[a-zA-Z0-9._\\- ]*[a-zA-Z0-9])?) *(?: \\(([^()]*)\\))?$") +var re = regexp.MustCompile("^([a-zA-Z0-9](?:[a-zA-Z0-9._\\- ]*[a-zA-Z0-9])?) *(?: \\((.*)\\))?$") // ExtractDependenciesList extracts dependencies from the "depends" field of library.properties func ExtractDependenciesList(depends string) ([]*Dependency, error) {