{-# LANGUAGE ViewPatterns #-} -- | -- Stability: stable module Test.Hspec.Api.Format.V2 ( Format , FormatConfig(..) , defaultFormatConfig , Event(..) , Progress , Path , Location(..) , Seconds(..) , Item(..) , Result(..) , FailureReason(..) , monadic -- * Register a formatter , registerFormatter , useFormatter , liftFormatter -- * Re-exports , SpecWith , Config , modifyConfig ) where import Test.Hspec.Core.Runner (Config(..)) import Test.Hspec.Core.Spec (modifyConfig, SpecWith) import Test.Hspec.Core.Format hiding (FormatConfig(..), defaultFormatConfig) import qualified Test.Hspec.Core.Format as Latest import Test.Hspec.Api.Format.V2.Config -- | -- Make a formatter available for use with @--format@. registerFormatter :: (String, FormatConfig -> IO Format) -> Config -> Config registerFormatter = registerFormatter_ . liftFormatter -- | -- Make a formatter available for use with @--format@ and use it by default. useFormatter :: (String, FormatConfig -> IO Format) -> Config -> Config useFormatter (liftFormatter -> formatter@(_, format)) config = (registerFormatter_ formatter config) { configFormat = Just format } -- copy of Test.Hspec.Core.Runner.registerFormatter registerFormatter_ :: (String, Latest.FormatConfig -> IO Latest.Format) -> Config -> Config registerFormatter_ formatter config = config { configAvailableFormatters = formatter : configAvailableFormatters config } -- | Make a formatter compatible with types from "Test.Hspec.Core.Format". liftFormatter :: (String, FormatConfig -> IO Format) -> (String, Latest.FormatConfig -> IO Format) liftFormatter = fmap liftFormat where liftFormat :: (FormatConfig -> IO Format) -> Latest.FormatConfig -> IO Format liftFormat format = format . unliftFormatConfig