Basic build test in preparation for Shake

This commit is contained in:
Chris Done 2015-01-08 21:11:46 +01:00
parent 8d523d98cf
commit 64a2393ca5
5 changed files with 89 additions and 0 deletions

View File

@ -5,9 +5,12 @@ module Stackage.CompleteBuild
( BuildType (..) ( BuildType (..)
, BumpType (..) , BumpType (..)
, BuildFlags (..) , BuildFlags (..)
, Settings (..)
, completeBuild , completeBuild
, justCheck , justCheck
, justUploadNightly , justUploadNightly
, getPerformBuild
, nightlySettings
) where ) where
import Control.Concurrent (threadDelay) import Control.Concurrent (threadDelay)

10
Stackage/ShakeBuild.hs Normal file
View File

@ -0,0 +1,10 @@
-- |
module Stackage.ShakeBuild where
import Data.Text (Text)
import Stackage.PerformBuild (PerformBuild(..))
-- | Run the shake builder.
performBuild :: PerformBuild -> IO [Text]
performBuild = undefined

View File

@ -29,6 +29,7 @@ library
Stackage.ServerBundle Stackage.ServerBundle
Stackage.Upload Stackage.Upload
Stackage.PerformBuild Stackage.PerformBuild
Stackage.ShakeBuild
Stackage.CompleteBuild Stackage.CompleteBuild
build-depends: base >= 4 && < 5 build-depends: base >= 4 && < 5
, containers , containers

View File

@ -1,3 +1,4 @@
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-}
module Stackage.BuildPlanSpec (spec) where module Stackage.BuildPlanSpec (spec) where
@ -13,8 +14,11 @@ import Network.HTTP.Client.TLS (tlsManagerSettings)
import Stackage.BuildConstraints import Stackage.BuildConstraints
import Stackage.BuildPlan import Stackage.BuildPlan
import Stackage.CheckBuildPlan import Stackage.CheckBuildPlan
import Stackage.CompleteBuild
import Stackage.PackageDescription import Stackage.PackageDescription
import Stackage.PerformBuild
import Stackage.Prelude import Stackage.Prelude
import qualified Stackage.ShakeBuild as Shake
import Stackage.UpdateBuildPlan import Stackage.UpdateBuildPlan
import Test.Hspec import Test.Hspec
@ -37,6 +41,12 @@ spec = do
,("bar", [0, 0, 0], [("mu", thisV [0, 0, 0])]) ,("bar", [0, 0, 0], [("mu", thisV [0, 0, 0])])
,("mu", [0, 0, 0], [("foo", thisV [0, 0, 0])])] ,("mu", [0, 0, 0], [("foo", thisV [0, 0, 0])])]
{- Shouldn't be testing this actually {- Shouldn't be testing this actually
it "basic build" $ basicBuild $ makePackageSet
[("acme-strtok", [0,1,0,3], [("mtl", thisV [2, 2, 1])])
,("acme-dont", [1,1], [])
,("mtl",[2,2,1],[("base",anyV)
,("transformers",anyV)])
,("transformers",[0,4,1,0],[("base",anyV)])]
it "default package set checks ok" $ it "default package set checks ok" $
check defaultBuildConstraints getLatestAllowedPlans check defaultBuildConstraints getLatestAllowedPlans
-} -}
@ -53,6 +63,34 @@ badBuildPlan m _ = do
Right () -> Right () ->
error "Expected bad build plan." error "Expected bad build plan."
-- | Perform a basic build.
basicBuild :: (BuildConstraints -> IO (Map PackageName PackagePlan))
-> void
-> IO ()
basicBuild getPlans _ = do
withManager
tlsManagerSettings
(\man ->
do settings@Settings{..} <- getTestSettings man
Nightly
fullBuildConstraints
getPlans
let pb = (getPerformBuild buildFlags settings)
print (pbPlan pb)
logs <- performBuild
pb
mapM_ putStrLn logs)
where buildType =
Nightly
buildFlags =
BuildFlags
{ bfEnableTests = False
, bfDoUpload = False
, bfEnableLibProfile = False
, bfVerbose = False
}
-- | Check build plan with the given package set getter. -- | Check build plan with the given package set getter.
check :: (Manager -> IO BuildConstraints) check :: (Manager -> IO BuildConstraints)
-> (BuildConstraints -> IO (Map PackageName PackagePlan)) -> (BuildConstraints -> IO (Map PackageName PackagePlan))
@ -134,6 +172,23 @@ thisV ver = thisVersion (Version ver [])
anyV :: VersionRange anyV :: VersionRange
anyV = anyVersion anyV = anyVersion
-- | Get settings for doing test builds.
getTestSettings :: Manager -> BuildType -> (Manager -> IO BuildConstraints) -> (BuildConstraints -> IO (Map PackageName PackagePlan)) -> IO Settings
getTestSettings man Nightly readPlanFile getPlans = do
day <- tshow . utctDay <$> getCurrentTime
bc <- readPlanFile man
plans <- getPlans bc
bp <- newBuildPlan plans bc
return $ nightlySettings day bp
-- | Test plan.
fullBuildConstraints :: void -> IO BuildConstraints
fullBuildConstraints _ =
decodeFileEither
(fpToString fp) >>=
either throwIO toBC
where fp = "test/full-build-constraints.yaml"
-- | Test plan. -- | Test plan.
testBuildConstraints :: void -> IO BuildConstraints testBuildConstraints :: void -> IO BuildConstraints
testBuildConstraints _ = testBuildConstraints _ =

View File

@ -0,0 +1,20 @@
packages:
"Test":
- acme-dont
- acme-strtok
global-flags: []
skipped-tests: []
expected-test-failures: []
expected-haddock-failures: []
skipped-benchmarks: []
skipped-profiling: []
github-users:
bar:
- demo
package-flags:
foo:
demo: true