github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/syft/pkg/cataloger/alpine/dependency_test.go (about) 1 package alpine 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/anchore/syft/syft/pkg" 9 "github.com/anchore/syft/syft/pkg/cataloger/internal/dependency" 10 ) 11 12 func Test_dbEntryDependencySpecifier(t *testing.T) { 13 tests := []struct { 14 name string 15 p pkg.Package 16 want dependency.Specification 17 }{ 18 { 19 name: "keeps given values + package name", 20 p: pkg.Package{ 21 Name: "package-c", 22 Metadata: pkg.ApkDBEntry{ 23 Provides: []string{"a-thing"}, 24 Dependencies: []string{"b-thing"}, 25 }, 26 }, 27 want: dependency.Specification{ 28 Provides: []string{"package-c", "a-thing"}, 29 Requires: []string{"b-thing"}, 30 }, 31 }, 32 { 33 name: "strip version specifiers", 34 p: pkg.Package{ 35 Name: "package-a", 36 Metadata: pkg.ApkDBEntry{ 37 Provides: []string{"so:libc.musl-x86_64.so.1=1"}, 38 Dependencies: []string{"so:libc.musl-x86_64.so.2=2"}, 39 }, 40 }, 41 want: dependency.Specification{ 42 Provides: []string{"package-a", "so:libc.musl-x86_64.so.1"}, 43 Requires: []string{"so:libc.musl-x86_64.so.2"}, 44 }, 45 }, 46 { 47 name: "empty dependency data entries", 48 p: pkg.Package{ 49 Name: "package-a", 50 Metadata: pkg.ApkDBEntry{ 51 Provides: []string{""}, 52 Dependencies: []string{""}, 53 }, 54 }, 55 want: dependency.Specification{ 56 Provides: []string{"package-a"}, 57 Requires: nil, 58 }, 59 }, 60 } 61 for _, tt := range tests { 62 t.Run(tt.name, func(t *testing.T) { 63 assert.Equal(t, tt.want, dbEntryDependencySpecifier(tt.p)) 64 }) 65 } 66 } 67 68 func Test_stripVersionSpecifier(t *testing.T) { 69 tests := []struct { 70 name string 71 version string 72 want string 73 }{ 74 { 75 name: "empty expression", 76 version: "", 77 want: "", 78 }, 79 { 80 name: "no expression", 81 version: "cmd:foo", 82 want: "cmd:foo", 83 }, 84 { 85 name: "=", 86 version: "cmd:scanelf=1.3.4-r0", 87 want: "cmd:scanelf", 88 }, 89 { 90 name: ">=", 91 version: "cmd:scanelf>=1.3.4-r0", 92 want: "cmd:scanelf", 93 }, 94 { 95 name: "<", 96 version: "cmd:scanelf<1.3.4-r0", 97 want: "cmd:scanelf", 98 }, 99 { 100 name: "ignores file paths", 101 version: "/bin/sh", 102 want: "/bin/sh", 103 }, 104 } 105 for _, tt := range tests { 106 t.Run(tt.name, func(t *testing.T) { 107 assert.Equal(t, tt.want, stripVersionSpecifier(tt.version)) 108 }) 109 } 110 }