on e88ef6f help sign in
stackage/test/Stackage2/BuildPlanSpec.hs
35 lines 1.1 kB history raw
1{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-}
2module Stackage2.BuildPlanSpec (spec) where
4import Stackage2.BuildPlan
5import Stackage2.Prelude
6import Stackage2.BuildConstraints
7import Stackage2.UpdateBuildPlan
8import Test.Hspec
9import qualified Data.Yaml as Y
10import Distribution.Version (anyVersion)
11import qualified Data.Map as Map
13spec :: Spec
14spec = it "works" $ do
15 bc <- defaultBuildConstraints
16 bp <- newBuildPlan bc
17 let bs = Y.encode bp
18 ebp' = Y.decodeEither bs
20 bp' <- either error return ebp'
22 let allPackages = Map.keysSet (bpPackages bp) ++ Map.keysSet (bpPackages bp')
23 forM_ allPackages $ \name ->
24 (name, lookup name (bpPackages bp')) `shouldBe`
25 (name, lookup name (bpPackages bp))
27 bp' `shouldBe` bp
28 bp2 <- updateBuildPlan bp
29 dropVersionRanges bp2 `shouldBe` dropVersionRanges bp
30 where
31 dropVersionRanges bp =
32 bp { bpPackages = map go $ bpPackages bp }
33 where
34 go pb = pb { ppConstraints = go' $ ppConstraints pb }
35 go' pc = pc { pcVersionRange = anyVersion }