module Test.ImpSpec.Main (
  impSpecMain,
  impSpecConfig,
  impSpecMainWithConfig,
) where

import System.IO (
  BufferMode (LineBuffering),
  hSetBuffering,
  hSetEncoding,
  stdout,
  utf8,
 )
import Test.Hspec
import Test.Hspec.Core.Runner (ColorMode (ColorAlways), Config (..), defaultConfig, hspecWith)

impSpecConfig :: Config
impSpecConfig :: Config
impSpecConfig =
  Config
defaultConfig
    { configTimes = True
    , configColorMode = ColorAlways
    }

impSpecMainWithConfig :: Config -> Spec -> IO ()
impSpecMainWithConfig :: Config -> Spec -> IO ()
impSpecMainWithConfig Config
conf Spec
spec = do
  Handle -> BufferMode -> IO ()
hSetBuffering Handle
stdout BufferMode
LineBuffering
  Handle -> TextEncoding -> IO ()
hSetEncoding Handle
stdout TextEncoding
utf8
  Config -> Spec -> IO ()
hspecWith Config
conf Spec
spec

impSpecMain :: Spec -> IO ()
impSpecMain :: Spec -> IO ()
impSpecMain = Config -> Spec -> IO ()
impSpecMainWithConfig Config
impSpecConfig