github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/rpm/package_test.go (about) 1 package rpm 2 3 import ( 4 "testing" 5 6 "github.com/nextlinux/gosbom/gosbom/linux" 7 "github.com/nextlinux/gosbom/gosbom/pkg" 8 "github.com/sergi/go-diff/diffmatchpatch" 9 ) 10 11 func Test_packageURL(t *testing.T) { 12 tests := []struct { 13 name string 14 distro *linux.Release 15 metadata pkg.RpmMetadata 16 expected string 17 }{ 18 { 19 name: "go case", 20 distro: &linux.Release{ 21 ID: "rhel", 22 VersionID: "8.4", 23 }, 24 metadata: pkg.RpmMetadata{ 25 Name: "p", 26 Version: "v", 27 Release: "r", 28 Epoch: nil, 29 }, 30 expected: "pkg:rpm/rhel/p@v-r?distro=rhel-8.4", 31 }, 32 { 33 name: "with arch and epoch", 34 distro: &linux.Release{ 35 ID: "centos", 36 VersionID: "7", 37 }, 38 metadata: pkg.RpmMetadata{ 39 Name: "p", 40 Version: "v", 41 Arch: "a", 42 Release: "r", 43 Epoch: intRef(1), 44 }, 45 expected: "pkg:rpm/centos/p@v-r?arch=a&epoch=1&distro=centos-7", 46 }, 47 { 48 name: "missing distro", 49 metadata: pkg.RpmMetadata{ 50 Name: "p", 51 Version: "v", 52 Release: "r", 53 Epoch: nil, 54 }, 55 expected: "pkg:rpm/p@v-r", 56 }, 57 { 58 name: "with upstream source rpm info", 59 distro: &linux.Release{ 60 ID: "rhel", 61 VersionID: "8.4", 62 }, 63 metadata: pkg.RpmMetadata{ 64 Name: "p", 65 Version: "v", 66 Release: "r", 67 SourceRpm: "sourcerpm", 68 }, 69 expected: "pkg:rpm/rhel/p@v-r?upstream=sourcerpm&distro=rhel-8.4", 70 }, 71 } 72 73 for _, test := range tests { 74 t.Run(test.name, func(t *testing.T) { 75 actual := packageURL(test.metadata, test.distro) 76 if actual != test.expected { 77 dmp := diffmatchpatch.New() 78 diffs := dmp.DiffMain(test.expected, actual, true) 79 t.Errorf("diff: %s", dmp.DiffPrettyText(diffs)) 80 } 81 }) 82 } 83 }