{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Test.Syd.Modify
(
modifyMaxSuccess,
modifyMaxDiscardRatio,
modifyMaxSize,
modifyMaxShrinks,
modifyRunSettings,
TestRunSettings (..),
sequential,
parallel,
withParallelism,
Parallelism (..),
randomiseExecutionOrder,
doNotRandomiseExecutionOrder,
withExecutionOrderRandomisation,
ExecutionOrderRandomisation (..),
modifyRetries,
withoutRetries,
withRetries,
flaky,
flakyWith,
notFlaky,
potentiallyFlaky,
potentiallyFlakyWith,
withFlakiness,
FlakinessMode (..),
expectPassing,
expectFailing,
withExpectationMode,
ExpectationMode (..),
)
where
import Control.Monad.RWS.Strict
import Test.QuickCheck.IO ()
import Test.Syd.Def
import Test.Syd.Run
import Test.Syd.SpecDef
modifyRunSettings :: (TestRunSettings -> TestRunSettings) -> TestDefM a b c -> TestDefM a b c
modifyRunSettings :: forall (a :: [*]) b c.
(TestRunSettings -> TestRunSettings)
-> TestDefM a b c -> TestDefM a b c
modifyRunSettings TestRunSettings -> TestRunSettings
func = forall r (m :: * -> *) a. MonadReader r m => (r -> r) -> m a -> m a
local (\TestDefEnv
tde -> TestDefEnv
tde {testDefEnvTestRunSettings :: TestRunSettings
testDefEnvTestRunSettings = TestRunSettings -> TestRunSettings
func forall a b. (a -> b) -> a -> b
$ TestDefEnv -> TestRunSettings
testDefEnvTestRunSettings TestDefEnv
tde})
modifyMaxSuccess :: (Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxSuccess :: forall (a :: [*]) b c.
(Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxSuccess Int -> Int
func = forall (a :: [*]) b c.
(TestRunSettings -> TestRunSettings)
-> TestDefM a b c -> TestDefM a b c
modifyRunSettings forall a b. (a -> b) -> a -> b
$ \TestRunSettings
trs -> TestRunSettings
trs {testRunSettingMaxSuccess :: Int
testRunSettingMaxSuccess = Int -> Int
func (TestRunSettings -> Int
testRunSettingMaxSuccess TestRunSettings
trs)}
modifyMaxDiscardRatio :: (Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxDiscardRatio :: forall (a :: [*]) b c.
(Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxDiscardRatio Int -> Int
func = forall (a :: [*]) b c.
(TestRunSettings -> TestRunSettings)
-> TestDefM a b c -> TestDefM a b c
modifyRunSettings forall a b. (a -> b) -> a -> b
$ \TestRunSettings
trs -> TestRunSettings
trs {testRunSettingMaxDiscardRatio :: Int
testRunSettingMaxDiscardRatio = Int -> Int
func (TestRunSettings -> Int
testRunSettingMaxDiscardRatio TestRunSettings
trs)}
modifyMaxSize :: (Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxSize :: forall (a :: [*]) b c.
(Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxSize Int -> Int
func = forall (a :: [*]) b c.
(TestRunSettings -> TestRunSettings)
-> TestDefM a b c -> TestDefM a b c
modifyRunSettings forall a b. (a -> b) -> a -> b
$ \TestRunSettings
trs -> TestRunSettings
trs {testRunSettingMaxSize :: Int
testRunSettingMaxSize = Int -> Int
func (TestRunSettings -> Int
testRunSettingMaxSize TestRunSettings
trs)}
modifyMaxShrinks :: (Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxShrinks :: forall (a :: [*]) b c.
(Int -> Int) -> TestDefM a b c -> TestDefM a b c
modifyMaxShrinks Int -> Int
func = forall (a :: [*]) b c.
(TestRunSettings -> TestRunSettings)
-> TestDefM a b c -> TestDefM a b c
modifyRunSettings forall a b. (a -> b) -> a -> b
$ \TestRunSettings
trs -> TestRunSettings
trs {testRunSettingMaxShrinks :: Int
testRunSettingMaxShrinks = Int -> Int
func (TestRunSettings -> Int
testRunSettingMaxShrinks TestRunSettings
trs)}
sequential :: TestDefM a b c -> TestDefM a b c
sequential :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
sequential = forall (a :: [*]) b c.
Parallelism -> TestDefM a b c -> TestDefM a b c
withParallelism Parallelism
Sequential
parallel :: TestDefM a b c -> TestDefM a b c
parallel :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
parallel = forall (a :: [*]) b c.
Parallelism -> TestDefM a b c -> TestDefM a b c
withParallelism Parallelism
Parallel
withParallelism :: Parallelism -> TestDefM a b c -> TestDefM a b c
withParallelism :: forall (a :: [*]) b c.
Parallelism -> TestDefM a b c -> TestDefM a b c
withParallelism Parallelism
p = forall w (m :: * -> *) a. MonadWriter w m => (w -> w) -> m a -> m a
censor ((forall a. a -> [a] -> [a]
: []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (outers :: [*]) inner extra.
Parallelism
-> SpecDefForest outers inner extra
-> SpecDefTree outers inner extra
DefParallelismNode Parallelism
p)
doNotRandomiseExecutionOrder :: TestDefM a b c -> TestDefM a b c
doNotRandomiseExecutionOrder :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
doNotRandomiseExecutionOrder = forall (a :: [*]) b c.
ExecutionOrderRandomisation -> TestDefM a b c -> TestDefM a b c
withExecutionOrderRandomisation ExecutionOrderRandomisation
DoNotRandomiseExecutionOrder
randomiseExecutionOrder :: TestDefM a b c -> TestDefM a b c
randomiseExecutionOrder :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
randomiseExecutionOrder = forall (a :: [*]) b c.
ExecutionOrderRandomisation -> TestDefM a b c -> TestDefM a b c
withExecutionOrderRandomisation ExecutionOrderRandomisation
RandomiseExecutionOrder
withExecutionOrderRandomisation :: ExecutionOrderRandomisation -> TestDefM a b c -> TestDefM a b c
withExecutionOrderRandomisation :: forall (a :: [*]) b c.
ExecutionOrderRandomisation -> TestDefM a b c -> TestDefM a b c
withExecutionOrderRandomisation ExecutionOrderRandomisation
p = forall w (m :: * -> *) a. MonadWriter w m => (w -> w) -> m a -> m a
censor ((forall a. a -> [a] -> [a]
: []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (outers :: [*]) inner extra.
ExecutionOrderRandomisation
-> SpecDefForest outers inner extra
-> SpecDefTree outers inner extra
DefRandomisationNode ExecutionOrderRandomisation
p)
modifyRetries :: (Word -> Word) -> TestDefM a b c -> TestDefM a b c
modifyRetries :: forall (a :: [*]) b c.
(Word -> Word) -> TestDefM a b c -> TestDefM a b c
modifyRetries Word -> Word
modRetries = forall w (m :: * -> *) a. MonadWriter w m => (w -> w) -> m a -> m a
censor ((forall a. a -> [a] -> [a]
: []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (outers :: [*]) inner extra.
(Word -> Word)
-> SpecDefForest outers inner extra
-> SpecDefTree outers inner extra
DefRetriesNode Word -> Word
modRetries)
withoutRetries :: TestDefM a b c -> TestDefM a b c
withoutRetries :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
withoutRetries = forall (a :: [*]) b c.
(Word -> Word) -> TestDefM a b c -> TestDefM a b c
modifyRetries (forall a b. a -> b -> a
const Word
0)
withRetries :: Word -> TestDefM a b c -> TestDefM a b c
withRetries :: forall (a :: [*]) b c. Word -> TestDefM a b c -> TestDefM a b c
withRetries Word
w = forall (a :: [*]) b c.
(Word -> Word) -> TestDefM a b c -> TestDefM a b c
modifyRetries (forall a b. a -> b -> a
const Word
w)
flaky :: Word -> TestDefM a b c -> TestDefM a b c
flaky :: forall (a :: [*]) b c. Word -> TestDefM a b c -> TestDefM a b c
flaky Word
i = forall (a :: [*]) b c. Word -> TestDefM a b c -> TestDefM a b c
withRetries Word
i forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: [*]) b c.
FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness (Maybe String -> FlakinessMode
MayBeFlaky forall a. Maybe a
Nothing)
flakyWith :: Word -> String -> TestDefM a b c -> TestDefM a b c
flakyWith :: forall (a :: [*]) b c.
Word -> String -> TestDefM a b c -> TestDefM a b c
flakyWith Word
i String
message = forall (a :: [*]) b c.
(Word -> Word) -> TestDefM a b c -> TestDefM a b c
modifyRetries (forall a b. a -> b -> a
const Word
i) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: [*]) b c.
FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness (Maybe String -> FlakinessMode
MayBeFlaky (forall a. a -> Maybe a
Just String
message))
notFlaky :: TestDefM a b c -> TestDefM a b c
notFlaky :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
notFlaky = forall (a :: [*]) b c.
FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness FlakinessMode
MayNotBeFlaky
potentiallyFlaky :: TestDefM a b c -> TestDefM a b c
potentiallyFlaky :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
potentiallyFlaky = forall (a :: [*]) b c.
FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness (Maybe String -> FlakinessMode
MayBeFlaky forall a. Maybe a
Nothing)
potentiallyFlakyWith :: String -> TestDefM a b c -> TestDefM a b c
potentiallyFlakyWith :: forall (a :: [*]) b c. String -> TestDefM a b c -> TestDefM a b c
potentiallyFlakyWith String
message = forall (a :: [*]) b c.
FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness (Maybe String -> FlakinessMode
MayBeFlaky (forall a. a -> Maybe a
Just String
message))
withFlakiness :: FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness :: forall (a :: [*]) b c.
FlakinessMode -> TestDefM a b c -> TestDefM a b c
withFlakiness FlakinessMode
f = forall w (m :: * -> *) a. MonadWriter w m => (w -> w) -> m a -> m a
censor ((forall a. a -> [a] -> [a]
: []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (outers :: [*]) inner extra.
FlakinessMode
-> SpecDefForest outers inner extra
-> SpecDefTree outers inner extra
DefFlakinessNode FlakinessMode
f)
expectPassing :: TestDefM a b c -> TestDefM a b c
expectPassing :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
expectPassing = forall (a :: [*]) b c.
ExpectationMode -> TestDefM a b c -> TestDefM a b c
withExpectationMode ExpectationMode
ExpectPassing
expectFailing :: TestDefM a b c -> TestDefM a b c
expectFailing :: forall (a :: [*]) b c. TestDefM a b c -> TestDefM a b c
expectFailing = forall (a :: [*]) b c.
ExpectationMode -> TestDefM a b c -> TestDefM a b c
withExpectationMode ExpectationMode
ExpectFailing
withExpectationMode :: ExpectationMode -> TestDefM a b c -> TestDefM a b c
withExpectationMode :: forall (a :: [*]) b c.
ExpectationMode -> TestDefM a b c -> TestDefM a b c
withExpectationMode ExpectationMode
em = forall w (m :: * -> *) a. MonadWriter w m => (w -> w) -> m a -> m a
censor ((forall a. a -> [a] -> [a]
: []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (outers :: [*]) inner extra.
ExpectationMode
-> SpecDefForest outers inner extra
-> SpecDefTree outers inner extra
DefExpectationNode ExpectationMode
em)