{-# LANGUAGE FlexibleInstances #-}
module Test.Hspec.Discover {-# WARNING
  "This module is used by @hspec-discover@.  It is not part of the public API and may change at any time."
  #-} (
  Spec
, hspec
, IsFormatter (..)
, hspecWithFormatter
, postProcessSpec
, describe
, module Prelude
) where

import           Test.Hspec.Core.Spec
import           Test.Hspec.Core.Runner
import           Test.Hspec.Core.Formatters.V1

class IsFormatter a where
  toFormatter :: a -> IO Formatter

instance IsFormatter (IO Formatter) where
  toFormatter :: IO Formatter -> IO Formatter
toFormatter = forall a. a -> a
id

instance IsFormatter Formatter where
  toFormatter :: Formatter -> IO Formatter
toFormatter = forall (m :: * -> *) a. Monad m => a -> m a
return

hspecWithFormatter :: IsFormatter a => a -> Spec -> IO ()
hspecWithFormatter :: forall a. IsFormatter a => a -> Spec -> IO ()
hspecWithFormatter a
formatter Spec
spec = do
  Formatter
f <- forall a. IsFormatter a => a -> IO Formatter
toFormatter a
formatter
  Config -> Spec -> IO ()
hspecWith Config
defaultConfig {configFormatter :: Maybe Formatter
configFormatter = forall a. a -> Maybe a
Just Formatter
f} Spec
spec

postProcessSpec :: FilePath -> Spec -> Spec
postProcessSpec :: FilePath -> Spec -> Spec
postProcessSpec FilePath
_ = forall a. a -> a
id