module Test.Sandwich.Options (
  Options
  , defaultOptions

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

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

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

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

  -- * Timing
  , optionsTestTimerType

  -- * Dry run
  , optionsDryRun

  -- * 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 {
  optionsTestArtifactsDirectory :: TestArtifactsDirectory
optionsTestArtifactsDirectory = TestArtifactsDirectory
TestArtifactsNone
  , optionsSavedLogLevel :: Maybe LogLevel
optionsSavedLogLevel = forall a. a -> Maybe a
Just LogLevel
LevelDebug
  , optionsMemoryLogLevel :: Maybe LogLevel
optionsMemoryLogLevel = forall a. a -> Maybe a
Just LogLevel
LevelDebug
  , optionsLogFormatter :: LogEntryFormatter
optionsLogFormatter = LogEntryFormatter
defaultLogEntryFormatter
  , optionsFilterTree :: Maybe TreeFilter
optionsFilterTree = forall a. Maybe a
Nothing
  , optionsDryRun :: Bool
optionsDryRun = Bool
False
  , optionsFormatters :: [SomeFormatter]
optionsFormatters = [forall f. (Formatter f, Show f, Typeable f) => f -> SomeFormatter
SomeFormatter PrintFormatter
defaultPrintFormatter]
  , optionsProjectRoot :: Maybe FilePath
optionsProjectRoot = forall a. Maybe a
Nothing
  , optionsTestTimerType :: TestTimerType
optionsTestTimerType = SpeedScopeTestTimerType { speedScopeTestTimerWriteRawTimings :: Bool
speedScopeTestTimerWriteRawTimings = Bool
False }
  }