github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/haskell/parse_stack_yaml_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 TestParseStackYaml(t *testing.T) {
    13  	fixture := "test-fixtures/stack.yaml"
    14  	locationSet := file.NewLocationSet(file.NewLocation(fixture))
    15  
    16  	expectedPkgs := []pkg.Package{
    17  		{
    18  			Name:         "ShellCheck",
    19  			Version:      "0.8.0",
    20  			PURL:         "pkg:hackage/ShellCheck@0.8.0",
    21  			Locations:    locationSet,
    22  			Language:     pkg.Haskell,
    23  			Type:         pkg.HackagePkg,
    24  			MetadataType: pkg.HackageMetadataType,
    25  			Metadata: pkg.HackageMetadata{
    26  				PkgHash: "353c9322847b661e4c6f7c83c2acf8e5c08b682fbe516c7d46c29605937543df",
    27  			},
    28  		},
    29  		{
    30  			Name:         "colourista",
    31  			Version:      "0.1.0.1",
    32  			PURL:         "pkg:hackage/colourista@0.1.0.1",
    33  			Locations:    locationSet,
    34  			Language:     pkg.Haskell,
    35  			Type:         pkg.HackagePkg,
    36  			MetadataType: pkg.HackageMetadataType,
    37  			Metadata: pkg.HackageMetadata{
    38  				PkgHash: "98353ee0e2f5d97d2148513f084c1cd37dfda03e48aa9dd7a017c9d9c0ba710e",
    39  			},
    40  		},
    41  		{
    42  			Name:         "language-docker",
    43  			Version:      "11.0.0",
    44  			PURL:         "pkg:hackage/language-docker@11.0.0",
    45  			Locations:    locationSet,
    46  			Language:     pkg.Haskell,
    47  			Type:         pkg.HackagePkg,
    48  			MetadataType: pkg.HackageMetadataType,
    49  			Metadata: pkg.HackageMetadata{
    50  				PkgHash: "3406ff0c1d592490f53ead8cf2cd22bdf3d79fd125ccaf3add683f6d71c24d55",
    51  			},
    52  		},
    53  		{
    54  			Name:         "spdx",
    55  			Version:      "1.0.0.2",
    56  			PURL:         "pkg:hackage/spdx@1.0.0.2",
    57  			Locations:    locationSet,
    58  			Language:     pkg.Haskell,
    59  			Type:         pkg.HackagePkg,
    60  			MetadataType: pkg.HackageMetadataType,
    61  			Metadata: pkg.HackageMetadata{
    62  				PkgHash: "7dfac9b454ff2da0abb7560f0ffbe00ae442dd5cb76e8be469f77e6988a70fed",
    63  			},
    64  		},
    65  		{
    66  			Name:         "hspec",
    67  			Version:      "2.9.4",
    68  			PURL:         "pkg:hackage/hspec@2.9.4",
    69  			Locations:    locationSet,
    70  			Language:     pkg.Haskell,
    71  			Type:         pkg.HackagePkg,
    72  			MetadataType: pkg.HackageMetadataType,
    73  			Metadata: pkg.HackageMetadata{
    74  				PkgHash: "658a6a74d5a70c040edd6df2a12228c6d9e63082adaad1ed4d0438ad082a0ef3",
    75  			},
    76  		},
    77  		{
    78  			Name:         "hspec-core",
    79  			Version:      "2.9.4",
    80  			PURL:         "pkg:hackage/hspec-core@2.9.4",
    81  			Locations:    locationSet,
    82  			Language:     pkg.Haskell,
    83  			Type:         pkg.HackagePkg,
    84  			MetadataType: pkg.HackageMetadataType,
    85  			Metadata: pkg.HackageMetadata{
    86  				PkgHash: "a126e9087409fef8dcafcd2f8656456527ac7bb163ed4d9cb3a57589042a5fe8",
    87  			},
    88  		},
    89  		{
    90  			Name:         "hspec-discover",
    91  			Version:      "2.9.4",
    92  			PURL:         "pkg:hackage/hspec-discover@2.9.4",
    93  			Locations:    locationSet,
    94  			Language:     pkg.Haskell,
    95  			Type:         pkg.HackagePkg,
    96  			MetadataType: pkg.HackageMetadataType,
    97  			Metadata: pkg.HackageMetadata{
    98  				PkgHash: "fbcf49ecfc3d4da53e797fd0275264cba776ffa324ee223e2a3f4ec2d2c9c4a6",
    99  			},
   100  		},
   101  		{
   102  			Name:         "stm",
   103  			Version:      "2.5.0.2",
   104  			PURL:         "pkg:hackage/stm@2.5.0.2",
   105  			Locations:    locationSet,
   106  			Language:     pkg.Haskell,
   107  			Type:         pkg.HackagePkg,
   108  			MetadataType: pkg.HackageMetadataType,
   109  			Metadata: pkg.HackageMetadata{
   110  				PkgHash: "e4dc6473faaa75fbd7eccab4e3ee1d651d75bb0e49946ef0b8b751ccde771a55",
   111  			},
   112  		},
   113  	}
   114  
   115  	// TODO: relationships are not under test yet
   116  	var expectedRelationships []artifact.Relationship
   117  
   118  	pkgtest.TestFileParser(t, fixture, parseStackYaml, expectedPkgs, expectedRelationships)
   119  
   120  }