github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/python/package_test.go (about) 1 package python 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/anchore/syft/syft/pkg" 9 ) 10 11 func Test_packageURL(t *testing.T) { 12 tests := []struct { 13 testName string 14 name string 15 version string 16 metadata *pkg.PythonPackage 17 want string 18 }{ 19 { 20 testName: "without metadata", 21 name: "name", 22 version: "v0.1.0", 23 want: "pkg:pypi/name@v0.1.0", 24 }, 25 { 26 testName: "with vcs info", 27 name: "name", 28 version: "v0.1.0", 29 metadata: &pkg.PythonPackage{ 30 Name: "bogus", // note: ignored 31 Version: "v0.2.0", // note: ignored 32 DirectURLOrigin: &pkg.PythonDirectURLOriginInfo{ 33 VCS: "git", 34 URL: "https://github.com/test/test.git", 35 CommitID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 36 }, 37 }, 38 want: "pkg:pypi/name@v0.1.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Ftest%2Ftest.git%40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 39 }, 40 } 41 for _, tt := range tests { 42 t.Run(tt.testName, func(t *testing.T) { 43 assert.Equal(t, tt.want, packageURL(tt.name, tt.version, tt.metadata)) 44 }) 45 } 46 } 47 48 func Test_normalization(t *testing.T) { 49 normalForm := "friendly-bard" 50 tests := []string{ 51 normalForm, 52 "Friendly-Bard", 53 "FRIENDLY-BARD", 54 "friendly.bard", 55 "friendly_bard", 56 "friendly--bard", 57 "FrIeNdLy-._.-bArD", 58 } 59 for _, tt := range tests { 60 t.Run(tt, func(t *testing.T) { 61 assert.Equal(t, normalForm, normalize(tt)) 62 }) 63 } 64 }