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 }