github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/pkg/cataloger/haskell/parse_stack_lock_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/lineaje-labs/syft/syft/pkg/cataloger/internal/pkgtest"
    10  )
    11  
    12  func TestParseStackLock(t *testing.T) {
    13  	url := "https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/14.yaml"
    14  	fixture := "test-fixtures/stack.yaml.lock"
    15  	locationSet := file.NewLocationSet(file.NewLocation(fixture))
    16  
    17  	expectedPkgs := []pkg.Package{
    18  		{
    19  			Name:      "HTTP",
    20  			Version:   "4000.3.16",
    21  			PURL:      "pkg:hackage/HTTP@4000.3.16",
    22  			Locations: locationSet,
    23  			Language:  pkg.Haskell,
    24  			Type:      pkg.HackagePkg,
    25  			Metadata: pkg.HackageStackYamlLockEntry{
    26  				PkgHash:     "6042643c15a0b43e522a6693f1e322f05000d519543a84149cb80aeffee34f71",
    27  				SnapshotURL: url,
    28  			},
    29  		},
    30  		{
    31  			Name:      "configurator-pg",
    32  			Version:   "0.2.6",
    33  			PURL:      "pkg:hackage/configurator-pg@0.2.6",
    34  			Locations: locationSet,
    35  			Language:  pkg.Haskell,
    36  			Type:      pkg.HackagePkg,
    37  			Metadata: pkg.HackageStackYamlLockEntry{
    38  				PkgHash:     "cd9b06a458428e493a4d6def725af7ab1ab0fef678fbd871f9586fc7f9aa70be",
    39  				SnapshotURL: url,
    40  			},
    41  		},
    42  		{
    43  			Name:      "hasql-dynamic-statements",
    44  			Version:   "0.3.1.1",
    45  			PURL:      "pkg:hackage/hasql-dynamic-statements@0.3.1.1",
    46  			Locations: locationSet,
    47  			Language:  pkg.Haskell,
    48  			Type:      pkg.HackagePkg,
    49  			Metadata: pkg.HackageStackYamlLockEntry{
    50  				PkgHash:     "2cfe6e75990e690f595a87cbe553f2e90fcd738610f6c66749c81cc4396b2cc4",
    51  				SnapshotURL: url,
    52  			},
    53  		},
    54  		{
    55  			Name:      "hasql-implicits",
    56  			Version:   "0.1.0.4",
    57  			PURL:      "pkg:hackage/hasql-implicits@0.1.0.4",
    58  			Locations: locationSet,
    59  			Language:  pkg.Haskell,
    60  			Type:      pkg.HackagePkg,
    61  			Metadata: pkg.HackageStackYamlLockEntry{
    62  				PkgHash:     "0848d3cbc9d94e1e539948fa0be4d0326b26335034161bf8076785293444ca6f",
    63  				SnapshotURL: url,
    64  			},
    65  		},
    66  		{
    67  			Name:      "hasql-pool",
    68  			Version:   "0.5.2.2",
    69  			PURL:      "pkg:hackage/hasql-pool@0.5.2.2",
    70  			Locations: locationSet,
    71  			Language:  pkg.Haskell,
    72  			Type:      pkg.HackagePkg,
    73  			Metadata: pkg.HackageStackYamlLockEntry{
    74  				PkgHash:     "b56d4dea112d97a2ef4b2749508c0ca646828cb2d77b827e8dc433d249bb2062",
    75  				SnapshotURL: url,
    76  			},
    77  		},
    78  		{
    79  			Name:      "lens-aeson",
    80  			Version:   "1.1.3",
    81  			PURL:      "pkg:hackage/lens-aeson@1.1.3",
    82  			Locations: locationSet,
    83  			Language:  pkg.Haskell,
    84  			Type:      pkg.HackagePkg,
    85  			Metadata: pkg.HackageStackYamlLockEntry{
    86  				PkgHash:     "52c8eaecd2d1c2a969c0762277c4a8ee72c339a686727d5785932e72ef9c3050",
    87  				SnapshotURL: url,
    88  			},
    89  		},
    90  		{
    91  			Name:      "optparse-applicative",
    92  			Version:   "0.16.1.0",
    93  			PURL:      "pkg:hackage/optparse-applicative@0.16.1.0",
    94  			Locations: locationSet,
    95  			Language:  pkg.Haskell,
    96  			Type:      pkg.HackagePkg,
    97  			Metadata: pkg.HackageStackYamlLockEntry{
    98  				PkgHash:     "418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731",
    99  				SnapshotURL: url,
   100  			},
   101  		},
   102  		{
   103  			Name:      "protolude",
   104  			Version:   "0.3.2",
   105  			PURL:      "pkg:hackage/protolude@0.3.2",
   106  			Locations: locationSet,
   107  			Language:  pkg.Haskell,
   108  			Type:      pkg.HackagePkg,
   109  			Metadata: pkg.HackageStackYamlLockEntry{
   110  				PkgHash:     "2a38b3dad40d238ab644e234b692c8911423f9d3ed0e36b62287c4a698d92cd1",
   111  				SnapshotURL: url,
   112  			},
   113  		},
   114  		{
   115  			Name:      "ptr",
   116  			Version:   "0.16.8.2",
   117  			PURL:      "pkg:hackage/ptr@0.16.8.2",
   118  			Locations: locationSet,
   119  			Language:  pkg.Haskell,
   120  			Type:      pkg.HackagePkg,
   121  			Metadata: pkg.HackageStackYamlLockEntry{
   122  				PkgHash:     "708ebb95117f2872d2c5a554eb6804cf1126e86abe793b2673f913f14e5eb1ac",
   123  				SnapshotURL: url,
   124  			},
   125  		},
   126  	}
   127  
   128  	// TODO: relationships are not under test yet
   129  	var expectedRelationships []artifact.Relationship
   130  
   131  	pkgtest.TestFileParser(t, fixture, parseStackLock, expectedPkgs, expectedRelationships)
   132  }