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)