mirror of
https://github.com/anchore/syft
synced 2024-11-10 06:14:16 +00:00
048df17e3d
* use pkg values in relationship fields Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * add linter rule for using values in relationships Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * use new cmptest package for comparing relationships Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * create cmptest for common cmp.Diff options in test Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * condense matches for relationship ruleguard Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * remove relationship type from rules Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * restore build tag Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * suggest using values Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * nil check pkgs Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> --------- Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
71 lines
1.3 KiB
Go
71 lines
1.3 KiB
Go
package cmptest
|
|
|
|
import (
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/google/go-cmp/cmp/cmpopts"
|
|
|
|
"github.com/anchore/syft/syft/file"
|
|
"github.com/anchore/syft/syft/pkg"
|
|
)
|
|
|
|
func DefaultCommonOptions() []cmp.Option {
|
|
return CommonOptions(nil, nil)
|
|
}
|
|
|
|
func CommonOptions(licenseCmp LicenseComparer, locationCmp LocationComparer) []cmp.Option {
|
|
if licenseCmp == nil {
|
|
licenseCmp = DefaultLicenseComparer
|
|
}
|
|
|
|
if locationCmp == nil {
|
|
locationCmp = DefaultLocationComparer
|
|
}
|
|
|
|
return []cmp.Option{
|
|
cmpopts.IgnoreFields(pkg.Package{}, "id"), // note: ID is not deterministic for test purposes
|
|
cmpopts.SortSlices(pkg.Less),
|
|
cmpopts.SortSlices(DefaultRelationshipComparer),
|
|
cmp.Comparer(
|
|
func(x, y file.LocationSet) bool {
|
|
xs := x.ToSlice()
|
|
ys := y.ToSlice()
|
|
|
|
if len(xs) != len(ys) {
|
|
return false
|
|
}
|
|
for i, xe := range xs {
|
|
ye := ys[i]
|
|
if !locationCmp(xe, ye) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
},
|
|
),
|
|
cmp.Comparer(
|
|
func(x, y pkg.LicenseSet) bool {
|
|
xs := x.ToSlice()
|
|
ys := y.ToSlice()
|
|
|
|
if len(xs) != len(ys) {
|
|
return false
|
|
}
|
|
for i, xe := range xs {
|
|
ye := ys[i]
|
|
if !licenseCmp(xe, ye) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
},
|
|
),
|
|
cmp.Comparer(
|
|
locationCmp,
|
|
),
|
|
cmp.Comparer(
|
|
licenseCmp,
|
|
),
|
|
}
|
|
}
|