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