stackage/test/Stackage2/BuildPlanSpec.hs
2014-12-07 19:10:35 +02:00

36 lines
1.1 KiB
Haskell

{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-}
module Stackage2.BuildPlanSpec (spec) where
import Stackage2.BuildPlan
import Stackage2.Prelude
import Stackage2.PackageConstraints
import Stackage2.UpdateBuildPlan
import Test.Hspec
import qualified Data.Yaml as Y
import Control.Exception (evaluate)
import Distribution.Version (anyVersion)
import qualified Data.Map as Map
spec :: Spec
spec = it "works" $ do
pc <- defaultPackageConstraints
bp <- newBuildPlan pc
let bs = Y.encode bp
mbp' = Y.decode bs
bp' <- maybe (error "decoding failed") return mbp'
let allPackages = Map.keysSet (bpExtra bp) ++ Map.keysSet (bpExtra bp')
forM_ allPackages $ \name ->
(name, lookup name (bpExtra bp')) `shouldBe`
(name, lookup name (bpExtra $ () <$ bp))
mbp' `shouldBe` Just (() <$ bp)
bp2 <- newBuildPlan $ updatePackageConstraints bp
dropVersionRanges bp2 `shouldBe` dropVersionRanges bp
where
dropVersionRanges bp =
bp { bpExtra = map go $ bpExtra bp }
where
go pb = pb { pbVersionRange = anyVersion }