github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/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/anchore/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  			MetadataType: pkg.HackageMetadataType,
    26  			Metadata: pkg.HackageMetadata{
    27  				PkgHash:     "6042643c15a0b43e522a6693f1e322f05000d519543a84149cb80aeffee34f71",
    28  				SnapshotURL: url,
    29  			},
    30  		},
    31  		{
    32  			Name:         "configurator-pg",
    33  			Version:      "0.2.6",
    34  			PURL:         "pkg:hackage/configurator-pg@0.2.6",
    35  			Locations:    locationSet,
    36  			Language:     pkg.Haskell,
    37  			Type:         pkg.HackagePkg,
    38  			MetadataType: pkg.HackageMetadataType,
    39  			Metadata: pkg.HackageMetadata{
    40  				PkgHash:     "cd9b06a458428e493a4d6def725af7ab1ab0fef678fbd871f9586fc7f9aa70be",
    41  				SnapshotURL: url,
    42  			},
    43  		},
    44  		{
    45  			Name:         "hasql-dynamic-statements",
    46  			Version:      "0.3.1.1",
    47  			PURL:         "pkg:hackage/hasql-dynamic-statements@0.3.1.1",
    48  			Locations:    locationSet,
    49  			Language:     pkg.Haskell,
    50  			Type:         pkg.HackagePkg,
    51  			MetadataType: pkg.HackageMetadataType,
    52  			Metadata: pkg.HackageMetadata{
    53  				PkgHash:     "2cfe6e75990e690f595a87cbe553f2e90fcd738610f6c66749c81cc4396b2cc4",
    54  				SnapshotURL: url,
    55  			},
    56  		},
    57  		{
    58  			Name:         "hasql-implicits",
    59  			Version:      "0.1.0.4",
    60  			PURL:         "pkg:hackage/hasql-implicits@0.1.0.4",
    61  			Locations:    locationSet,
    62  			Language:     pkg.Haskell,
    63  			Type:         pkg.HackagePkg,
    64  			MetadataType: pkg.HackageMetadataType,
    65  			Metadata: pkg.HackageMetadata{
    66  				PkgHash:     "0848d3cbc9d94e1e539948fa0be4d0326b26335034161bf8076785293444ca6f",
    67  				SnapshotURL: url,
    68  			},
    69  		},
    70  		{
    71  			Name:         "hasql-pool",
    72  			Version:      "0.5.2.2",
    73  			PURL:         "pkg:hackage/hasql-pool@0.5.2.2",
    74  			Locations:    locationSet,
    75  			Language:     pkg.Haskell,
    76  			Type:         pkg.HackagePkg,
    77  			MetadataType: pkg.HackageMetadataType,
    78  			Metadata: pkg.HackageMetadata{
    79  				PkgHash:     "b56d4dea112d97a2ef4b2749508c0ca646828cb2d77b827e8dc433d249bb2062",
    80  				SnapshotURL: url,
    81  			},
    82  		},
    83  		{
    84  			Name:         "lens-aeson",
    85  			Version:      "1.1.3",
    86  			PURL:         "pkg:hackage/lens-aeson@1.1.3",
    87  			Locations:    locationSet,
    88  			Language:     pkg.Haskell,
    89  			Type:         pkg.HackagePkg,
    90  			MetadataType: pkg.HackageMetadataType,
    91  			Metadata: pkg.HackageMetadata{
    92  				PkgHash:     "52c8eaecd2d1c2a969c0762277c4a8ee72c339a686727d5785932e72ef9c3050",
    93  				SnapshotURL: url,
    94  			},
    95  		},
    96  		{
    97  			Name:         "optparse-applicative",
    98  			Version:      "0.16.1.0",
    99  			PURL:         "pkg:hackage/optparse-applicative@0.16.1.0",
   100  			Locations:    locationSet,
   101  			Language:     pkg.Haskell,
   102  			Type:         pkg.HackagePkg,
   103  			MetadataType: pkg.HackageMetadataType,
   104  			Metadata: pkg.HackageMetadata{
   105  				PkgHash:     "418c22ed6a19124d457d96bc66bd22c93ac22fad0c7100fe4972bbb4ac989731",
   106  				SnapshotURL: url,
   107  			},
   108  		},
   109  		{
   110  			Name:         "protolude",
   111  			Version:      "0.3.2",
   112  			PURL:         "pkg:hackage/protolude@0.3.2",
   113  			Locations:    locationSet,
   114  			Language:     pkg.Haskell,
   115  			Type:         pkg.HackagePkg,
   116  			MetadataType: pkg.HackageMetadataType,
   117  			Metadata: pkg.HackageMetadata{
   118  				PkgHash:     "2a38b3dad40d238ab644e234b692c8911423f9d3ed0e36b62287c4a698d92cd1",
   119  				SnapshotURL: url,
   120  			},
   121  		},
   122  		{
   123  			Name:         "ptr",
   124  			Version:      "0.16.8.2",
   125  			PURL:         "pkg:hackage/ptr@0.16.8.2",
   126  			Locations:    locationSet,
   127  			Language:     pkg.Haskell,
   128  			Type:         pkg.HackagePkg,
   129  			MetadataType: pkg.HackageMetadataType,
   130  			Metadata: pkg.HackageMetadata{
   131  				PkgHash:     "708ebb95117f2872d2c5a554eb6804cf1126e86abe793b2673f913f14e5eb1ac",
   132  				SnapshotURL: url,
   133  			},
   134  		},
   135  	}
   136  
   137  	// TODO: relationships are not under test yet
   138  	var expectedRelationships []artifact.Relationship
   139  
   140  	pkgtest.TestFileParser(t, fixture, parseStackLock, expectedPkgs, expectedRelationships)
   141  }