{-# LANGUAGE RankNTypes #-} module Test.Hspec.Core.Format ( Format(..) , Progress , Path , Location(..) , Seconds(..) , Item(..) , Result(..) , FailureReason(..) ) where import Test.Hspec.Core.Spec (Progress, Location(..)) import Test.Hspec.Core.Example (FailureReason(..)) import Test.Hspec.Core.Util (Path) import Test.Hspec.Core.Clock data Item = Item { Item -> Maybe Location itemLocation :: Maybe Location , Item -> Seconds itemDuration :: Seconds , Item -> String itemInfo :: String , Item -> Result itemResult :: Result } deriving Int -> Item -> ShowS [Item] -> ShowS Item -> String (Int -> Item -> ShowS) -> (Item -> String) -> ([Item] -> ShowS) -> Show Item forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Item] -> ShowS $cshowList :: [Item] -> ShowS show :: Item -> String $cshow :: Item -> String showsPrec :: Int -> Item -> ShowS $cshowsPrec :: Int -> Item -> ShowS Show data Result = Success | Pending (Maybe String) | Failure FailureReason deriving Int -> Result -> ShowS [Result] -> ShowS Result -> String (Int -> Result -> ShowS) -> (Result -> String) -> ([Result] -> ShowS) -> Show Result forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Result] -> ShowS $cshowList :: [Result] -> ShowS show :: Result -> String $cshow :: Result -> String showsPrec :: Int -> Result -> ShowS $cshowsPrec :: Int -> Result -> ShowS Show data Format m = Format { Format m -> forall a. m a -> IO a formatRun :: forall a. m a -> IO a , Format m -> Path -> m () formatGroupStarted :: Path -> m () , Format m -> Path -> m () formatGroupDone :: Path -> m () , Format m -> Path -> Progress -> m () formatProgress :: Path -> Progress -> m () , Format m -> Path -> Item -> m () formatItem :: Path -> Item -> m () }