mirror of
https://github.com/anchore/syft.git
synced 2026-11-01 06:56:40 +01:00
this PR makes the following changes to update the underlying license model to have more expressive capabilities it also provides some guarantee's surrounding the license values themselves - Licenses are updated from string -> pkg.LicenseSet which contain pkg.License with the following fields: - original `Value` read by syft - If it's possible to construct licenses will always have a valid SPDX expression for downstream consumption - the above is run against a generated list of SPDX license ID to try and find the correct ID - SPDX concluded vs declared is added to the new struct - URL source for license is added to the new struct - Location source is added to the new struct to show where the expression was pulled from
63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package php
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/sergi/go-diff/diffmatchpatch"
|
|
|
|
"github.com/anchore/syft/syft/pkg"
|
|
)
|
|
|
|
func Test_packageURL(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
metadata parsedData
|
|
expected string
|
|
}{
|
|
{
|
|
name: "with extractable vendor",
|
|
metadata: parsedData{
|
|
[]string{},
|
|
pkg.PhpComposerJSONMetadata{
|
|
Version: "1.0.1",
|
|
Name: "ven/name",
|
|
},
|
|
},
|
|
expected: "pkg:composer/ven/name@1.0.1",
|
|
},
|
|
{
|
|
name: "name with slashes (invalid)",
|
|
metadata: parsedData{
|
|
[]string{},
|
|
pkg.PhpComposerJSONMetadata{
|
|
Name: "ven/name/component",
|
|
Version: "1.0.1",
|
|
},
|
|
},
|
|
expected: "pkg:composer/ven/name-component@1.0.1",
|
|
},
|
|
{
|
|
name: "unknown vendor",
|
|
metadata: parsedData{
|
|
[]string{},
|
|
pkg.PhpComposerJSONMetadata{
|
|
Name: "name",
|
|
Version: "1.0.1",
|
|
},
|
|
},
|
|
expected: "pkg:composer/name@1.0.1",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
actual := packageURL(test.metadata)
|
|
if actual != test.expected {
|
|
dmp := diffmatchpatch.New()
|
|
diffs := dmp.DiffMain(test.expected, actual, true)
|
|
t.Errorf("diff: %s", dmp.DiffPrettyText(diffs))
|
|
}
|
|
})
|
|
}
|
|
}
|