diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Config.hs | 13 | ||||
-rw-r--r-- | src/Main.hs | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/Config.hs b/src/Config.hs index e1dcebf..adf0321 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -8,6 +8,7 @@ module Config ( import Control.Monad.Combinators import Data.ByteString.Lazy qualified as BS +import Data.Scientific import Data.Text qualified as T import Data.YAML @@ -19,7 +20,8 @@ import System.FilePath.Glob data Config = Config { configDir :: FilePath , configTool :: Maybe FilePath - , configTests :: [Pattern] + , configTests :: [ Pattern ] + , configTimeout :: Maybe Scientific } deriving (Show) @@ -31,8 +33,17 @@ instance FromYAML (FilePath -> Config) where , m .:? "tests" .!= [] -- list of patterns ] ) + configTimeout <- fmap fromNumber <$> m .:! "timeout" return $ \configDir -> Config {..} +newtype Number = Number { fromNumber :: Scientific } + +instance FromYAML Number where + parseYAML = \case + Scalar _ (SFloat x) -> return $ Number $ realToFrac x + Scalar _ (SInt x) -> return $ Number $ fromIntegral x + node -> typeMismatch "int or float" node + findConfig :: IO (Maybe FilePath) findConfig = go "." where diff --git a/src/Main.hs b/src/Main.hs index 36f88bd..2f4a0fe 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -114,6 +114,7 @@ main = do { optTest = defaultTestOptions { optDefaultTool = envtool , optTestDir = normalise $ baseDir </> optTestDir defaultTestOptions + , optTimeout = fromMaybe (optTimeout defaultTestOptions) $ configTimeout =<< config } } |