github.com/anchore/syft@v1.38.2/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 9 func Test_packageURL(t *testing.T) { 10 tests := []struct { 11 name string 12 packageName string 13 packageVersion string 14 expected string 15 }{ 16 { 17 name: "with extractable vendor", 18 packageName: "ven/name", 19 packageVersion: "1.0.1", 20 expected: "pkg:composer/ven/name@1.0.1", 21 }, 22 { 23 name: "name with slashes (invalid)", 24 packageName: "ven/name/component", 25 packageVersion: "1.0.1", 26 expected: "pkg:composer/ven/name-component@1.0.1", 27 }, 28 { 29 name: "unknown vendor", 30 packageName: "name", 31 packageVersion: "1.0.1", 32 expected: "pkg:composer/name@1.0.1", 33 }, 34 } 35 36 for _, test := range tests { 37 t.Run(test.name, func(t *testing.T) { 38 actual := packageURLFromComposer(test.packageName, test.packageVersion) 39 if actual != test.expected { 40 dmp := diffmatchpatch.New() 41 diffs := dmp.DiffMain(test.expected, actual, true) 42 t.Errorf("diff: %s", dmp.DiffPrettyText(diffs)) 43 } 44 }) 45 } 46 } 47 48 func Test_packageURLFromPear(t *testing.T) { 49 tests := []struct { 50 name string 51 channel string 52 version string 53 expected string 54 }{ 55 { 56 name: "memcached", 57 channel: "pear.php.net", 58 version: "3.2.0", 59 expected: "pkg:pear/pear.php.net/memcached@3.2.0", 60 }, 61 { 62 name: "memcached", 63 channel: "", // important! 64 version: "3.2.0", 65 expected: "pkg:pear/pecl.php.net/memcached@3.2.0", 66 }, 67 } 68 69 for _, test := range tests { 70 t.Run(test.name, func(t *testing.T) { 71 actual := packageURLFromPear(test.name, test.channel, test.version) 72 if actual != test.expected { 73 dmp := diffmatchpatch.New() 74 diffs := dmp.DiffMain(test.expected, actual, true) 75 t.Errorf("diff: %s", dmp.DiffPrettyText(diffs)) 76 } 77 }) 78 } 79 }