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)