hspec-core-2.10.6: src/Test/Hspec/Core/Runner/Result.hs
module Test.Hspec.Core.Runner.Result (
-- RE-EXPORTED from Test.Hspec.Core.Runner
SpecResult(SpecResult)
, specResultItems
, specResultSuccess
, ResultItem(ResultItem)
, resultItemPath
, resultItemStatus
, resultItemIsFailure
, ResultItemStatus(..)
-- END RE-EXPORTED from Test.Hspec.Core.Runner
, toSpecResult
) where
import Prelude ()
import Test.Hspec.Core.Compat
import Test.Hspec.Core.Util
import qualified Test.Hspec.Core.Format as Format
-- |
-- @since 2.10.0
data SpecResult = SpecResult {
-- |
-- @since 2.10.0
specResultItems :: [ResultItem]
-- |
-- @since 2.10.0
, specResultSuccess :: !Bool
} deriving (Eq, Show)
-- |
-- @since 2.10.0
data ResultItem = ResultItem {
-- |
-- @since 2.10.0
resultItemPath :: Path
-- |
-- @since 2.10.0
, resultItemStatus :: ResultItemStatus
} deriving (Eq, Show)
-- |
-- @since 2.10.0
resultItemIsFailure :: ResultItem -> Bool
resultItemIsFailure item = case resultItemStatus item of
ResultItemSuccess -> False
ResultItemPending -> False
ResultItemFailure -> True
data ResultItemStatus =
ResultItemSuccess
| ResultItemPending
| ResultItemFailure
deriving (Eq, Show)
toSpecResult :: Bool -> [(Path, Format.Item)] -> SpecResult
toSpecResult failOnEmpty results = SpecResult items success
where
items = map toResultItem results
success = not (failOnEmpty && null results) && all (not . resultItemIsFailure) items
toResultItem :: (Path, Format.Item) -> ResultItem
toResultItem (path, item) = ResultItem path status
where
status = case Format.itemResult item of
Format.Success{} -> ResultItemSuccess
Format.Pending{} -> ResultItemPending
Format.Failure{} -> ResultItemFailure