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 }