{-# LANGUAGE CPP #-}
module Conferer.FetchFromConfig.Hspec
(
) where
import Conferer.Core
import Conferer.Types
import Conferer.FetchFromConfig.Basics
import Data.Either (rights)
import Data.String (fromString)
import Data.Text (Text, unpack, toLower)
import Data.Maybe (fromMaybe)
import qualified Test.Hspec.Core.Runner as Hspec
import qualified Test.Hspec.Core.Formatters as Hspec
instance FetchFromConfig Hspec.ColorMode where
fetch =
fetchFromConfigWith
(\t -> case t of
"ColorAuto" -> Just Hspec.ColorAuto
"ColorNever" -> Just Hspec.ColorNever
"ColorAlways" -> Just Hspec.ColorAlways
_ -> Nothing
)
instance FetchFromConfig Hspec.Formatter where
fetch =
fetchFromConfigWith
(\t -> case toLower t of
"silent" -> Just Hspec.silent
"specdoc" -> Just Hspec.specdoc
"progress" -> Just Hspec.progress
"failed_examples" -> Just Hspec.failed_examples
_ -> Nothing
)
instance DefaultConfig Hspec.Config where
configDef = Hspec.defaultConfig
instance FetchFromConfig Hspec.Config where
fetch k config = do
pure configDef
>>= findKeyAndApplyConfig config k "dry-run" (\v c -> c { Hspec.configDryRun = v })
>>= findKeyAndApplyConfig config k "fast-fail" (\v c -> c { Hspec.configFastFail = v })
>>= findKeyAndApplyConfig config k "rerun" (\v c -> c { Hspec.configRerun = v })
>>= findKeyAndApplyConfig config k "quickCheck-max-success" (\v c -> c { Hspec.configQuickCheckMaxSuccess = v })
>>= findKeyAndApplyConfig config k "quickCheck-max-discard-ratio" (\v c -> c { Hspec.configQuickCheckMaxDiscardRatio = v })
>>= findKeyAndApplyConfig config k "quickCheck-max-size" (\v c -> c { Hspec.configQuickCheckMaxSize = v })
>>= findKeyAndApplyConfig config k "quickCheck-seed" (\v c -> c { Hspec.configQuickCheckSeed = v })
>>= findKeyAndApplyConfig config k "smallCheck-depth" (\v c -> c { Hspec.configSmallCheckDepth = v })
>>= findKeyAndApplyConfig config k "color-mode" (\v c -> c { Hspec.configColorMode = v })
>>= findKeyAndApplyConfig config k "html-output" (\v c -> c { Hspec.configHtmlOutput = v })
>>= findKeyAndApplyConfig config k "formatter" (\v c -> c { Hspec.configFormatter = v })
#if MIN_VERSION_hspec_core(2,1,1)
#endif
#if MIN_VERSION_hspec_core(2,1,9)
>>= findKeyAndApplyConfig config k "concurrent-jobs" (\v c -> c { Hspec.configConcurrentJobs = v })
#endif
#if MIN_VERSION_hspec_core(2,4,0)
>>= findKeyAndApplyConfig config k "ignore-config-file" (\v c -> c { Hspec.configIgnoreConfigFile = v })
>>= findKeyAndApplyConfig config k "print-cpu-time" (\v c -> c { Hspec.configPrintCpuTime = v })
>>= findKeyAndApplyConfig config k "diff" (\v c -> c { Hspec.configDiff = v })
#endif
#if MIN_VERSION_hspec_core(2,4,2)
>>= findKeyAndApplyConfig config k "failure-report" (\v c -> c { Hspec.configFailureReport = v })
#endif
#if MIN_VERSION_hspec_core(2,7,0)
>>= findKeyAndApplyConfig config k "focused-only" (\v c -> c { Hspec.configFocusedOnly = v })
>>= findKeyAndApplyConfig config k "fail-on-focused" (\v c -> c { Hspec.configFailOnFocused = v })
#endif
>>= (return . return)