summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Config.hs13
-rw-r--r--src/Main.hs1
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
}
}