github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/catalog_test.go (about) 1 package cataloger 2 3 import ( 4 "testing" 5 6 "github.com/nextlinux/gosbom/gosbom/artifact" 7 "github.com/nextlinux/gosbom/gosbom/file" 8 "github.com/nextlinux/gosbom/gosbom/linux" 9 "github.com/nextlinux/gosbom/gosbom/pkg" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func Test_CatalogPanicHandling(t *testing.T) { 14 catalog, relationships, err := Catalog( 15 file.NewMockResolverForPaths(), 16 &linux.Release{}, 17 1, 18 panickingCataloger{}, 19 returningCataloger{}, 20 ) 21 22 require.Error(t, err) 23 require.Contains(t, err.Error(), "catalog_test.go") 24 require.Len(t, catalog.Sorted(), 2) 25 require.Len(t, relationships, 1) 26 } 27 28 type panickingCataloger struct{} 29 30 func (p panickingCataloger) Name() string { 31 return "panicking-cataloger" 32 } 33 34 func (p panickingCataloger) Catalog(_ file.Resolver) ([]pkg.Package, []artifact.Relationship, error) { 35 panic("something bad happened") 36 } 37 38 var _ pkg.Cataloger = (*panickingCataloger)(nil) 39 40 type returningCataloger struct{} 41 42 func (p returningCataloger) Name() string { 43 return "returning-cataloger" 44 } 45 46 func (p returningCataloger) Catalog(_ file.Resolver) ([]pkg.Package, []artifact.Relationship, error) { 47 pkg1 := pkg.Package{ 48 Name: "package-1", 49 Version: "1.0", 50 } 51 pkg1.SetID() 52 pkg2 := pkg.Package{ 53 Name: "package-2", 54 Version: "2.0", 55 } 56 pkg2.SetID() 57 return []pkg.Package{pkg1, pkg2}, []artifact.Relationship{ 58 { 59 From: pkg1, 60 To: pkg2, 61 Type: artifact.DependencyOfRelationship, 62 }, 63 }, nil 64 } 65 66 var _ pkg.Cataloger = (*returningCataloger)(nil)