sandwich-0.2.0.0: src/Test/Sandwich/Options.hs
{-# LANGUAGE CPP #-}
module Test.Sandwich.Options (
Options
, defaultOptions
-- * Artifacts
, optionsTestArtifactsDirectory
, TestArtifactsDirectory(..)
, defaultTestArtifactsDirectory
-- * Logging
, optionsSavedLogLevel
, optionsMemoryLogLevel
, optionsLogFormatter
, LogEntryFormatter
-- * Formatting
, optionsFormatters
, SomeFormatter(..)
, Formatter(..)
-- * Filtering
, optionsFilterTree
, optionsPruneTree
, TreeFilter(..)
-- * Timing
, optionsTestTimerType
-- * Dry run
, optionsDryRun
-- * Misc
, optionsProjectRoot
) where
import Control.Monad.Logger
import Data.Time.Clock
import Test.Sandwich.Formatters.Print
import Test.Sandwich.Types.RunTree
#ifdef mingw32_HOST_OS
import Data.Function ((&))
#endif
-- | A reasonable default set of options.
defaultOptions :: Options
defaultOptions = Options {
optionsTestArtifactsDirectory = TestArtifactsNone
, optionsSavedLogLevel = Just LevelDebug
, optionsMemoryLogLevel = Just LevelDebug
, optionsLogFormatter = defaultLogEntryFormatter
, optionsPruneTree = Nothing
, optionsFilterTree = Nothing
, optionsDryRun = False
, optionsFormatters = [SomeFormatter defaultPrintFormatter]
, optionsProjectRoot = Nothing
, optionsTestTimerType = SpeedScopeTestTimerType { speedScopeTestTimerWriteRawTimings = False }
}
defaultTestArtifactsDirectory :: TestArtifactsDirectory
defaultTestArtifactsDirectory = TestArtifactsGeneratedDirectory "test_runs" getFolderName
where
#ifndef mingw32_HOST_OS
getFolderName = show <$> getCurrentTime
#else
getFolderName = do
ts <- show <$> getCurrentTime
return $ ts
& replace ':' '_'
replace :: Eq a => a -> a -> [a] -> [a]
replace a b = map $ \c -> if c == a then b else c
#endif