github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/syft/pkg/cataloger/haskell/parse_cabal_freeze_test.go (about)

     1  package haskell
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/anchore/syft/syft/artifact"
     7  	"github.com/anchore/syft/syft/file"
     8  	"github.com/anchore/syft/syft/pkg"
     9  	"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest"
    10  )
    11  
    12  func TestParseCabalFreeze(t *testing.T) {
    13  	fixture := "test-fixtures/cabal.project.freeze"
    14  	locationSet := file.NewLocationSet(file.NewLocation(fixture))
    15  
    16  	expectedPkgs := []pkg.Package{
    17  		{
    18  			Name:      "Cabal",
    19  			Version:   "3.2.1.0",
    20  			PURL:      "pkg:hackage/Cabal@3.2.1.0",
    21  			Locations: locationSet,
    22  			Language:  pkg.Haskell,
    23  			Type:      pkg.HackagePkg,
    24  		},
    25  		{
    26  			Name:      "Diff",
    27  			Version:   "0.4.1",
    28  			PURL:      "pkg:hackage/Diff@0.4.1",
    29  			Locations: locationSet,
    30  			Language:  pkg.Haskell,
    31  			Type:      pkg.HackagePkg,
    32  		},
    33  		{
    34  			Name:      "HTTP",
    35  			Version:   "4000.3.16",
    36  			PURL:      "pkg:hackage/HTTP@4000.3.16",
    37  			Locations: locationSet,
    38  			Language:  pkg.Haskell,
    39  			Type:      pkg.HackagePkg,
    40  		},
    41  		{
    42  			Name:      "HUnit",
    43  			Version:   "1.6.2.0",
    44  			PURL:      "pkg:hackage/HUnit@1.6.2.0",
    45  			Locations: locationSet,
    46  			Language:  pkg.Haskell,
    47  			Type:      pkg.HackagePkg,
    48  		},
    49  		{
    50  			Name:      "OneTuple",
    51  			Version:   "0.3.1",
    52  			PURL:      "pkg:hackage/OneTuple@0.3.1",
    53  			Locations: locationSet,
    54  			Language:  pkg.Haskell,
    55  			Type:      pkg.HackagePkg,
    56  		},
    57  		{
    58  			Name:      "Only",
    59  			Version:   "0.1",
    60  			PURL:      "pkg:hackage/Only@0.1",
    61  			Locations: locationSet,
    62  			Language:  pkg.Haskell,
    63  			Type:      pkg.HackagePkg,
    64  		},
    65  		{
    66  			Name:      "PyF",
    67  			Version:   "0.10.2.0",
    68  			PURL:      "pkg:hackage/PyF@0.10.2.0",
    69  			Locations: locationSet,
    70  			Language:  pkg.Haskell,
    71  			Type:      pkg.HackagePkg,
    72  		},
    73  		{
    74  			Name:      "QuickCheck",
    75  			Version:   "2.14.2",
    76  			PURL:      "pkg:hackage/QuickCheck@2.14.2",
    77  			Locations: locationSet,
    78  			Language:  pkg.Haskell,
    79  			Type:      pkg.HackagePkg,
    80  		},
    81  		{
    82  			Name:      "RSA",
    83  			Version:   "2.4.1",
    84  			PURL:      "pkg:hackage/RSA@2.4.1",
    85  			Locations: locationSet,
    86  			Language:  pkg.Haskell,
    87  			Type:      pkg.HackagePkg,
    88  		},
    89  		{
    90  			Name:      "SHA",
    91  			Version:   "1.6.4.4",
    92  			PURL:      "pkg:hackage/SHA@1.6.4.4",
    93  			Locations: locationSet,
    94  			Language:  pkg.Haskell,
    95  			Type:      pkg.HackagePkg,
    96  		},
    97  		{
    98  			Name:      "Spock",
    99  			Version:   "0.14.0.0",
   100  			PURL:      "pkg:hackage/Spock@0.14.0.0",
   101  			Locations: locationSet,
   102  			Language:  pkg.Haskell,
   103  			Type:      pkg.HackagePkg,
   104  		},
   105  	}
   106  
   107  	// TODO: relationships are not under test yet
   108  	var expectedRelationships []artifact.Relationship
   109  
   110  	pkgtest.TestFileParser(t, fixture, parseCabalFreeze, expectedPkgs, expectedRelationships)
   111  }