1{-# LANGUAGE RankNTypes #-}
2module Test.Hspec.Core.Format (
3  Format(..)
4, Progress
5, Path
6, Location(..)
7, Seconds(..)
8, Item(..)
9, Result(..)
10, FailureReason(..)
11) where
12
13import           Test.Hspec.Core.Spec (Progress, Location(..))
14import           Test.Hspec.Core.Example (FailureReason(..))
15import           Test.Hspec.Core.Util (Path)
16import           Test.Hspec.Core.Clock
17
18data Item = Item {
19  itemLocation :: Maybe Location
20, itemDuration :: Seconds
21, itemInfo :: String
22, itemResult :: Result
23} deriving Show
24
25data Result =
26    Success
27  | Pending (Maybe String)
28  | Failure FailureReason
29  deriving Show
30
31data Format m = Format {
32  formatRun :: forall a. m a -> IO a
33, formatGroupStarted :: Path -> m ()
34, formatGroupDone :: Path -> m ()
35, formatProgress :: Path -> Progress -> m ()
36, formatItemStarted :: Path -> m ()
37, formatItemDone :: Path -> Item -> m ()
38}
39