github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/php/package_test.go (about) 1 package php 2 3 import ( 4 "testing" 5 6 "github.com/sergi/go-diff/diffmatchpatch" 7 8 "github.com/anchore/syft/syft/pkg" 9 ) 10 11 func Test_packageURL(t *testing.T) { 12 tests := []struct { 13 name string 14 metadata parsedData 15 expected string 16 }{ 17 { 18 name: "with extractable vendor", 19 metadata: parsedData{ 20 []string{}, 21 pkg.PhpComposerJSONMetadata{ 22 Version: "1.0.1", 23 Name: "ven/name", 24 }, 25 }, 26 expected: "pkg:composer/ven/name@1.0.1", 27 }, 28 { 29 name: "name with slashes (invalid)", 30 metadata: parsedData{ 31 []string{}, 32 pkg.PhpComposerJSONMetadata{ 33 Name: "ven/name/component", 34 Version: "1.0.1", 35 }, 36 }, 37 expected: "pkg:composer/ven/name-component@1.0.1", 38 }, 39 { 40 name: "unknown vendor", 41 metadata: parsedData{ 42 []string{}, 43 pkg.PhpComposerJSONMetadata{ 44 Name: "name", 45 Version: "1.0.1", 46 }, 47 }, 48 expected: "pkg:composer/name@1.0.1", 49 }, 50 } 51 52 for _, test := range tests { 53 t.Run(test.name, func(t *testing.T) { 54 actual := packageURL(test.metadata) 55 if actual != test.expected { 56 dmp := diffmatchpatch.New() 57 diffs := dmp.DiffMain(test.expected, actual, true) 58 t.Errorf("diff: %s", dmp.DiffPrettyText(diffs)) 59 } 60 }) 61 } 62 }