shaker-0.3: src/Shaker/Action/Test.hs
module Shaker.Action.Test
where
import Shaker.Type
import Shaker.Reflexivite
import Control.Monad.Trans
import Control.Monad.Reader
import Language.Haskell.TH
-- | Discover all quickcheck properties in the project
-- and execute them
runQuickCheck :: Plugin
runQuickCheck = do
modMap <- runReflexivite
let filteredModMap = filter (not . null . cfPropName ) modMap
let modules = ["Test.QuickCheck","Prelude" ] ++ map cfModuleName filteredModMap
expression <- asks listProperties
resolvedExp <- lift $ runQ expression
let function = filter (/= '\n') $ pprint resolvedExp
lift $ putStrLn function
runFunction $ RunnableFunction modules ("sequence_ " ++ function ++ " >> return () ")
-- | Discover all Hunit test in the project and execute them
runHUnit :: Plugin
runHUnit = do
modMap <- runReflexivite
let filteredModMap = filter (not . null . cfHunitName) modMap
let modules = ["Test.HUnit","Prelude" ] ++ map cfModuleName filteredModMap
expression <- asks listHunit
resolvedExp <- lift $ runQ expression
let function = filter (/= '\n') $ pprint resolvedExp
lift $ putStrLn function
runFunction $ RunnableFunction modules ("runTestTT $ TestList $ " ++ function)