{-# LANGUAGE CPP #-}
module Test.Sandwich.Options (
Options
, defaultOptions
, optionsTestArtifactsDirectory
, TestArtifactsDirectory(..)
, defaultTestArtifactsDirectory
, optionsSavedLogLevel
, optionsMemoryLogLevel
, optionsLogFormatter
, LogEntryFormatter
, optionsFormatters
, SomeFormatter(..)
, Formatter(..)
, optionsFilterTree
, optionsPruneTree
, TreeFilter(..)
, optionsTestTimerType
, optionsDryRun
, 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
defaultOptions :: Options
defaultOptions :: Options
defaultOptions = Options {
optionsTestArtifactsDirectory :: TestArtifactsDirectory
optionsTestArtifactsDirectory = TestArtifactsDirectory
TestArtifactsNone
, optionsSavedLogLevel :: Maybe LogLevel
optionsSavedLogLevel = LogLevel -> Maybe LogLevel
forall a. a -> Maybe a
Just LogLevel
LevelDebug
, optionsMemoryLogLevel :: Maybe LogLevel
optionsMemoryLogLevel = LogLevel -> Maybe LogLevel
forall a. a -> Maybe a
Just LogLevel
LevelDebug
, optionsLogFormatter :: LogEntryFormatter
optionsLogFormatter = LogEntryFormatter
defaultLogEntryFormatter
, optionsPruneTree :: Maybe TreeFilter
optionsPruneTree = Maybe TreeFilter
forall a. Maybe a
Nothing
, optionsFilterTree :: Maybe TreeFilter
optionsFilterTree = Maybe TreeFilter
forall a. Maybe a
Nothing
, optionsDryRun :: Bool
optionsDryRun = Bool
False
, optionsFormatters :: [SomeFormatter]
optionsFormatters = [PrintFormatter -> SomeFormatter
forall f. (Formatter f, Show f, Typeable f) => f -> SomeFormatter
SomeFormatter PrintFormatter
defaultPrintFormatter]
, optionsProjectRoot :: Maybe FilePath
optionsProjectRoot = Maybe FilePath
forall a. Maybe a
Nothing
, optionsTestTimerType :: TestTimerType
optionsTestTimerType = SpeedScopeTestTimerType { speedScopeTestTimerWriteRawTimings :: Bool
speedScopeTestTimerWriteRawTimings = Bool
False }
}
defaultTestArtifactsDirectory :: TestArtifactsDirectory
defaultTestArtifactsDirectory :: TestArtifactsDirectory
defaultTestArtifactsDirectory = FilePath -> IO FilePath -> TestArtifactsDirectory
TestArtifactsGeneratedDirectory FilePath
"test_runs" IO FilePath
getFolderName
where
#ifndef mingw32_HOST_OS
getFolderName :: IO FilePath
getFolderName = UTCTime -> FilePath
forall a. Show a => a -> FilePath
show (UTCTime -> FilePath) -> IO UTCTime -> IO FilePath
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> IO UTCTime
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