From 65e6f51751cf1d2adf8f8ec6953672048deabd3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Thu, 27 Feb 2025 22:25:36 +0100 Subject: Fail when requested test is not found Changelog: Fail when test requested on command-line is not found --- src/Main.hs | 16 ++++++++++++---- 1 file 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) $ -- cgit v1.2.3