module Test.Framework.Runners.Options ( module Test.Framework.Runners.Options, TestPattern ) where import Test.Framework.Options import Test.Framework.Utilities import Test.Framework.Runners.TestPattern import Data.Monoid ( Last(Last, getLast) ) import Data.Semigroup as Sem ( Semigroup((<>)) ) data ColorMode = ColorAuto | ColorNever | ColorAlways type RunnerOptions = RunnerOptions' Maybe type CompleteRunnerOptions = RunnerOptions' K data RunnerOptions' f = RunnerOptions { forall (f :: * -> *). RunnerOptions' f -> f Int ropt_threads :: f Int, forall (f :: * -> *). RunnerOptions' f -> f TestOptions ropt_test_options :: f TestOptions, forall (f :: * -> *). RunnerOptions' f -> f [TestPattern] ropt_test_patterns :: f [TestPattern], forall (f :: * -> *). RunnerOptions' f -> f (Maybe FilePath) ropt_xml_output :: f (Maybe FilePath), forall (f :: * -> *). RunnerOptions' f -> f Bool ropt_xml_nested :: f Bool, forall (f :: * -> *). RunnerOptions' f -> f ColorMode ropt_color_mode :: f ColorMode, forall (f :: * -> *). RunnerOptions' f -> f Bool ropt_hide_successes :: f Bool, forall (f :: * -> *). RunnerOptions' f -> f Bool ropt_list_only :: f Bool } instance Semigroup (RunnerOptions' Maybe) where RunnerOptions' Maybe ro1 <> :: RunnerOptions' Maybe -> RunnerOptions' Maybe -> RunnerOptions' Maybe <> RunnerOptions' Maybe ro2 = RunnerOptions { ropt_threads :: Maybe Int ropt_threads = Last Int -> Maybe Int forall a. Last a -> Maybe a getLast ((RunnerOptions' Maybe -> Last Int) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Last Int forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy (Maybe Int -> Last Int forall a. Maybe a -> Last a Last (Maybe Int -> Last Int) -> (RunnerOptions' Maybe -> Maybe Int) -> RunnerOptions' Maybe -> Last Int forall b c a. (b -> c) -> (a -> b) -> a -> c . RunnerOptions' Maybe -> Maybe Int forall (f :: * -> *). RunnerOptions' f -> f Int ropt_threads) RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2), ropt_test_options :: Maybe TestOptions ropt_test_options = (RunnerOptions' Maybe -> Maybe TestOptions) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Maybe TestOptions forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy RunnerOptions' Maybe -> Maybe TestOptions forall (f :: * -> *). RunnerOptions' f -> f TestOptions ropt_test_options RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2, ropt_test_patterns :: Maybe [TestPattern] ropt_test_patterns = (RunnerOptions' Maybe -> Maybe [TestPattern]) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Maybe [TestPattern] forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy RunnerOptions' Maybe -> Maybe [TestPattern] forall (f :: * -> *). RunnerOptions' f -> f [TestPattern] ropt_test_patterns RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2, ropt_xml_output :: Maybe (Maybe FilePath) ropt_xml_output = (RunnerOptions' Maybe -> Maybe (Maybe FilePath)) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Maybe (Maybe FilePath) forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy RunnerOptions' Maybe -> Maybe (Maybe FilePath) forall (f :: * -> *). RunnerOptions' f -> f (Maybe FilePath) ropt_xml_output RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2, ropt_xml_nested :: Maybe Bool ropt_xml_nested = Last Bool -> Maybe Bool forall a. Last a -> Maybe a getLast ((RunnerOptions' Maybe -> Last Bool) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Last Bool forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy (Maybe Bool -> Last Bool forall a. Maybe a -> Last a Last (Maybe Bool -> Last Bool) -> (RunnerOptions' Maybe -> Maybe Bool) -> RunnerOptions' Maybe -> Last Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . RunnerOptions' Maybe -> Maybe Bool forall (f :: * -> *). RunnerOptions' f -> f Bool ropt_xml_nested) RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2), ropt_color_mode :: Maybe ColorMode ropt_color_mode = Last ColorMode -> Maybe ColorMode forall a. Last a -> Maybe a getLast ((RunnerOptions' Maybe -> Last ColorMode) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Last ColorMode forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy (Maybe ColorMode -> Last ColorMode forall a. Maybe a -> Last a Last (Maybe ColorMode -> Last ColorMode) -> (RunnerOptions' Maybe -> Maybe ColorMode) -> RunnerOptions' Maybe -> Last ColorMode forall b c a. (b -> c) -> (a -> b) -> a -> c . RunnerOptions' Maybe -> Maybe ColorMode forall (f :: * -> *). RunnerOptions' f -> f ColorMode ropt_color_mode) RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2), ropt_hide_successes :: Maybe Bool ropt_hide_successes = Last Bool -> Maybe Bool forall a. Last a -> Maybe a getLast ((RunnerOptions' Maybe -> Last Bool) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Last Bool forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy (Maybe Bool -> Last Bool forall a. Maybe a -> Last a Last (Maybe Bool -> Last Bool) -> (RunnerOptions' Maybe -> Maybe Bool) -> RunnerOptions' Maybe -> Last Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . RunnerOptions' Maybe -> Maybe Bool forall (f :: * -> *). RunnerOptions' f -> f Bool ropt_hide_successes) RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2), ropt_list_only :: Maybe Bool ropt_list_only = Last Bool -> Maybe Bool forall a. Last a -> Maybe a getLast ((RunnerOptions' Maybe -> Last Bool) -> RunnerOptions' Maybe -> RunnerOptions' Maybe -> Last Bool forall b a. Monoid b => (a -> b) -> a -> a -> b mappendBy (Maybe Bool -> Last Bool forall a. Maybe a -> Last a Last (Maybe Bool -> Last Bool) -> (RunnerOptions' Maybe -> Maybe Bool) -> RunnerOptions' Maybe -> Last Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . RunnerOptions' Maybe -> Maybe Bool forall (f :: * -> *). RunnerOptions' f -> f Bool ropt_list_only) RunnerOptions' Maybe ro1 RunnerOptions' Maybe ro2) } instance Monoid (RunnerOptions' Maybe) where mempty :: RunnerOptions' Maybe mempty = RunnerOptions { ropt_threads :: Maybe Int ropt_threads = Maybe Int forall a. Maybe a Nothing, ropt_test_options :: Maybe TestOptions ropt_test_options = Maybe TestOptions forall a. Maybe a Nothing, ropt_test_patterns :: Maybe [TestPattern] ropt_test_patterns = Maybe [TestPattern] forall a. Maybe a Nothing, ropt_xml_output :: Maybe (Maybe FilePath) ropt_xml_output = Maybe (Maybe FilePath) forall a. Maybe a Nothing, ropt_xml_nested :: Maybe Bool ropt_xml_nested = Maybe Bool forall a. Maybe a Nothing, ropt_color_mode :: Maybe ColorMode ropt_color_mode = Maybe ColorMode forall a. Maybe a Nothing, ropt_hide_successes :: Maybe Bool ropt_hide_successes = Maybe Bool forall a. Maybe a Nothing, ropt_list_only :: Maybe Bool ropt_list_only = Maybe Bool forall a. Maybe a Nothing } mappend :: RunnerOptions' Maybe -> RunnerOptions' Maybe -> RunnerOptions' Maybe mappend = RunnerOptions' Maybe -> RunnerOptions' Maybe -> RunnerOptions' Maybe forall a. Semigroup a => a -> a -> a (Sem.<>)