sensei-0.0.0: src/Trigger.hs
module Trigger (
trigger
, triggerAll
) where
import Prelude ()
import Prelude.Compat
import Data.List
import Session (Session, isFailure, isSuccess, hspecPreviousSummary, resetSummary)
import qualified Session
triggerAll :: Session -> IO (Bool, String)
triggerAll session = do
resetSummary session
trigger session
trigger :: Session -> IO (Bool, String)
trigger session = do
xs <- Session.reload session
fmap (xs ++) <$> if "Ok, modules loaded:" `isInfixOf` xs
then hspec
else return (False, "")
where
hspec = do
hasSpec <- Session.hasSpec session
if hasSpec
then runSpecs
else return (True, "")
runSpecs = do
failedPreviously <- isFailure <$> hspecPreviousSummary session
(success, xs) <- runSpec
fmap (xs ++) <$> if success && failedPreviously
then runSpec
else return (success, "")
runSpec = do
xs <- Session.runSpec session
success <- isSuccess <$> hspecPreviousSummary session
return (success, xs)