module Test.Sandwich.Options (
  Options
  , defaultOptions

  -- * Artifacts
  , optionsTestArtifactsDirectory
  , TestArtifactsDirectory(..)

  -- * Logging
  , optionsSavedLogLevel
  , optionsMemoryLogLevel
  , optionsLogFormatter
  , LogEntryFormatter

  -- * Formatting
  , optionsFormatters
  , SomeFormatter(..)
  , Formatter(..)

  -- * Filtering
  , optionsFilterTree
  , TreeFilter(..)

  -- * Timing
  , optionsTestTimerType

  -- * Misc
  , optionsProjectRoot
  ) where

import Control.Monad.Logger
import Test.Sandwich.Formatters.Print
import Test.Sandwich.Types.RunTree

-- | A reasonable default set of options.
defaultOptions :: Options
defaultOptions :: Options
defaultOptions = Options :: TestArtifactsDirectory
-> Maybe LogLevel
-> Maybe LogLevel
-> LogEntryFormatter
-> Maybe TreeFilter
-> Bool
-> [SomeFormatter]
-> Maybe FilePath
-> TestTimerType
-> Options
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
  , 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 :: Bool -> TestTimerType
SpeedScopeTestTimerType { speedScopeTestTimerWriteRawTimings :: Bool
speedScopeTestTimerWriteRawTimings = Bool
False }
  }