Remove space characters in license for cargo. (#154)
diff --git a/pkg/deps/cargo.go b/pkg/deps/cargo.go
index 5d900cd..70a2f03 100644
--- a/pkg/deps/cargo.go
+++ b/pkg/deps/cargo.go
@@ -167,6 +167,7 @@
segs := make(map[string]struct{})
for _, ss := range strings.Split(licenseStr, "/") {
for _, s := range strings.Split(ss, " OR ") {
+ s = strings.TrimSpace(s)
segs[s] = struct{}{}
}
}
diff --git a/pkg/deps/cargo_test.go b/pkg/deps/cargo_test.go
index 469d32d..a36a55a 100644
--- a/pkg/deps/cargo_test.go
+++ b/pkg/deps/cargo_test.go
@@ -61,7 +61,7 @@
Excludes: []deps.Exclude{},
}
- report := resolveTmpCargo(t, cargoToml, &config)
+ report := resolveTmpCargo(t, cargoToml, "", &config)
if len(report.Resolved) != 1 {
t.Error("len(report.Resolved) != 1")
}
@@ -87,7 +87,7 @@
Excludes: []deps.Exclude{{Name: "foo", Version: "0.0.0"}},
}
- report := resolveTmpCargo(t, cargoToml, &config)
+ report := resolveTmpCargo(t, cargoToml, "", &config)
if len(report.Resolved) != 0 {
t.Error("len(report.Resolved) != 0")
}
@@ -116,7 +116,7 @@
Excludes: []deps.Exclude{},
}
- report := resolveTmpCargo(t, cargoToml, &config)
+ report := resolveTmpCargo(t, cargoToml, "", &config)
if len(report.Resolved) != 1 {
t.Error("len(report.Resolved) != 1")
}
@@ -137,6 +137,40 @@
[dependencies]
libc = "0.2.126" # actual license: MIT OR Apache-2.0
bitflags = "1.3.2" # actual license: MIT/Apache-2.0
+fnv = "1.0.7" # actual license: Apache-2.0 / MIT
+`
+
+ cargoLock := `
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foo"
+version = "0.0.0"
+dependencies = [
+ "bitflags",
+ "fnv",
+ "libc",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.126"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
`
config := deps.ConfigDeps{
@@ -146,26 +180,21 @@
Excludes: []deps.Exclude{},
}
- report := resolveTmpCargo(t, cargoToml, &config)
- if len(report.Resolved) != 3 {
- t.Error("len(report.Resolved) != 3")
+ report := resolveTmpCargo(t, cargoToml, cargoLock, &config)
+ if len(report.Resolved) != 4 {
+ t.Error("len(report.Resolved) != 4")
}
for _, result := range report.Resolved {
- if result.Dependency == "libc" {
+ if result.Dependency == "libc" || result.Dependency == "bitflags" || result.Dependency == "fnv" {
if result.LicenseSpdxID != "Apache-2.0 OR MIT" || result.LicenseContent == "" {
- t.Error("Resolve dependency libc failed")
- }
- }
- if result.Dependency == "bitflags" {
- if result.LicenseSpdxID != "Apache-2.0 OR MIT" || result.LicenseContent == "" {
- t.Error("Resolve dependency libc failed")
+ t.Errorf("Resolve dependency %s failed", result.Dependency)
}
}
}
}
}
-func resolveTmpCargo(t *testing.T, cargoTomlContent string, config *deps.ConfigDeps) *deps.Report {
+func resolveTmpCargo(t *testing.T, cargoTomlContent string, cargoLockContent string, config *deps.ConfigDeps) *deps.Report {
dir, err := os.MkdirTemp("", "skywalking-eyes-test-cargo-")
if err != nil {
t.Error("Make temp dir failed", err)
@@ -194,6 +223,14 @@
return nil
}
+ if cargoLockContent != "" {
+ cargoLockFile := filepath.Join(dir, "Cargo.lock")
+ if err := os.WriteFile(cargoLockFile, []byte(cargoLockContent), 0644); err != nil {
+ t.Error("Write Cargo.lock failed", err)
+ return nil
+ }
+ }
+
resolver := new(deps.CargoTomlResolver)
var report deps.Report