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