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)