mirror of
https://github.com/commercialhaskell/stackage.git
synced 2026-01-12 23:38:29 +01:00
36 lines
1.0 KiB
Haskell
36 lines
1.0 KiB
Haskell
{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-}
|
|
module Stackage2.BuildPlanSpec (spec) where
|
|
|
|
import Stackage2.BuildPlan
|
|
import Stackage2.Prelude
|
|
import Stackage2.BuildConstraints
|
|
import Stackage2.UpdateBuildPlan
|
|
import Test.Hspec
|
|
import qualified Data.Yaml as Y
|
|
import Distribution.Version (anyVersion)
|
|
import qualified Data.Map as Map
|
|
|
|
spec :: Spec
|
|
spec = it "works" $ do
|
|
bc <- defaultBuildConstraints
|
|
bp <- newBuildPlan bc
|
|
let bs = Y.encode bp
|
|
ebp' = Y.decodeEither bs
|
|
|
|
bp' <- either error return ebp'
|
|
|
|
let allPackages = Map.keysSet (bpPackages bp) ++ Map.keysSet (bpPackages bp')
|
|
forM_ allPackages $ \name ->
|
|
(name, lookup name (bpPackages bp')) `shouldBe`
|
|
(name, lookup name (bpPackages bp))
|
|
|
|
bp' `shouldBe` bp
|
|
bp2 <- updateBuildPlan bp
|
|
dropVersionRanges bp2 `shouldBe` dropVersionRanges bp
|
|
where
|
|
dropVersionRanges bp =
|
|
bp { bpPackages = map go $ bpPackages bp }
|
|
where
|
|
go pb = pb { ppConstraints = go' $ ppConstraints pb }
|
|
go' pc = pc { pcVersionRange = anyVersion }
|