zifter-stack-0.0.0.9: test/Zifter/StackSpec.hs
{-# LANGUAGE FlexibleContexts #-}
module Zifter.StackSpec
( spec
) where
import TestImport
import Control.Concurrent.STM
import Zifter
import Zifter.OptParse
import Zifter.Stack
import Zifter.Zift
spec :: Spec
spec =
describe "stackGetPackageTargetTuples" $
it "finds the right packages for this repository" $ do
tups <- runZiftInRepo stackGetPackages
tups `shouldBe`
[ Pkg "zifter" [Lib "zifter:lib", Test "zifter:test:zifter-test"]
, Pkg "zifter-cabal" [Lib "zifter-cabal:lib"]
, Pkg "zifter-git" [Lib "zifter-git:lib"]
, Pkg "zifter-google-java-format"
[Lib "zifter-google-java-format:lib"]
, Pkg "zifter-hindent" [Lib "zifter-hindent:lib"]
, Pkg "zifter-hlint" [Lib "zifter-hlint:lib"]
, Pkg "zifter-stack"
[ Lib "zifter-stack:lib"
, Test "zifter-stack:test:zifter-stack-test"
]
]
runZiftInRepo :: Zift a -> IO a
runZiftInRepo func = do
rd <- resolveDir' ".."
pchan <- newTChanIO
td <- resolveDir rd "/tmp/zifter-tmp"
let ctx =
ZiftContext
{ rootdir = rd
, tmpdir = td
, settings =
Settings
{setsOutputColor = False, setsOutputMode = OutputFast}
, printChan = pchan
, recursionList = []
}
zr <- runZift ctx func
case zr of
ZiftSuccess a -> pure a
ZiftFailed r -> do
expectationFailure $ "zift failed: " ++ show r
undefined -- won't get here anyway