diff --git a/syft/pkg/php_composer_json_metadata.go b/syft/pkg/php_composer_json_metadata.go index 3b3e88f4f48..11b529d2b44 100644 --- a/syft/pkg/php_composer_json_metadata.go +++ b/syft/pkg/php_composer_json_metadata.go @@ -4,8 +4,11 @@ import ( "strings" "github.com/anchore/packageurl-go" + "github.com/anchore/syft/syft/linux" ) +var _ urlIdentifier = (*PhpComposerJSONMetadata)(nil) + // PhpComposerJSONMetadata represents information found from composer v1/v2 "installed.json" files as well as composer.lock files type PhpComposerJSONMetadata struct { Name string `json:"name"` @@ -40,7 +43,7 @@ type PhpComposerAuthors struct { Homepage string `json:"homepage,omitempty"` } -func (m PhpComposerJSONMetadata) PackageURL() string { +func (m PhpComposerJSONMetadata) PackageURL(_ *linux.Release) string { var name, vendor string fields := strings.Split(m.Name, "/") switch len(fields) { diff --git a/syft/pkg/php_composer_json_metadata_test.go b/syft/pkg/php_composer_json_metadata_test.go index c7a1acf8b1e..81453a7d02e 100644 --- a/syft/pkg/php_composer_json_metadata_test.go +++ b/syft/pkg/php_composer_json_metadata_test.go @@ -20,7 +20,8 @@ func TestPhpComposerJsonMetadata_pURL(t *testing.T) { Version: "1.0.1", }, expected: "pkg:composer/ven/name@1.0.1", - }, { + }, + { name: "name with slashes (invalid)", metadata: PhpComposerJSONMetadata{ Name: "ven/name/component", @@ -36,11 +37,23 @@ func TestPhpComposerJsonMetadata_pURL(t *testing.T) { }, expected: "pkg:composer/name@1.0.1", }, + { + name: "ignores distro", + distro: &linux.Release{ + ID: "rhel", + VersionID: "8.4", + }, + metadata: PhpComposerJSONMetadata{ + Name: "ven/name", + Version: "1.0.1", + }, + expected: "pkg:composer/ven/name@1.0.1", + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - actual := test.metadata.PackageURL() + actual := test.metadata.PackageURL(test.distro) if actual != test.expected { dmp := diffmatchpatch.New() diffs := dmp.DiffMain(test.expected, actual, true)