summaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-02-27 22:25:36 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2025-02-27 22:25:36 +0100
commit65e6f51751cf1d2adf8f8ec6953672048deabd3c (patch)
tree7aa9f5173791574381baa34763542d7717a35bc4 /src/Main.hs
parentd22a31766d2ecef0baf32fac41518f2f949545d1 (diff)
Fail when requested test is not found
Changelog: Fail when test requested on command-line is not found
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 65a5692..dbdbb40 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -3,6 +3,7 @@ module Main (main) where
import Control.Monad
import Data.Bifunctor
+import Data.List
import Data.Maybe
import Data.Text qualified as T
@@ -151,10 +152,17 @@ main = do
out <- startOutput (optVerbose opts) useColor
( modules, allModules ) <- parseTestFiles $ map fst files
- tests <- forM (zip modules $ map snd files) $ \( Module {..}, mbTestName ) -> do
- return $ case mbTestName of
- Nothing -> moduleTests
- Just name -> filter ((==name) . testName) moduleTests
+ tests <- forM (zip modules files) $ \( Module {..}, ( filePath, mbTestName )) -> do
+ case mbTestName of
+ Nothing -> return moduleTests
+ Just name
+ | Just test <- find ((==name) . testName) moduleTests
+ -> return [ test ]
+ | otherwise
+ -> do
+ hPutStrLn stderr $ "Test `" <> T.unpack name <> "' not found in `" <> filePath <> "'"
+ exitFailure
+
let globalDefs = evalGlobalDefs $ concatMap (\m -> map (first ( moduleName m, )) $ moduleDefinitions m) allModules
ok <- allM (runTest out (optTest opts) globalDefs) $