summaryrefslogtreecommitdiff
path: root/src/Run.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Run.hs')
-rw-r--r--src/Run.hs28
1 files changed, 21 insertions, 7 deletions
diff --git a/src/Run.hs b/src/Run.hs
index d8251a2..e43265a 100644
--- a/src/Run.hs
+++ b/src/Run.hs
@@ -1,7 +1,8 @@
module Run (
module Run.Monad,
runTest,
- loadModules,
+ LoadedModules(..),
+ loadModules, loadModulesErr,
evalGlobalDefs,
) where
@@ -142,9 +143,15 @@ runTest out opts gdefs test = do
return False
-loadModules :: [ FilePath ] -> IO ( [ Module ], [ ( ( ModuleName, Text ), [ Tag ] ) ], GlobalDefs )
+data LoadedModules = LoadedModules
+ { lmModules :: [ Module ]
+ , lmTags :: [ ( ( ModuleName, Text ), [ Tag ] ) ]
+ , lmGlobalDefs :: GlobalDefs
+ }
+
+loadModules :: [ FilePath ] -> IO LoadedModules
loadModules files = do
- ( modules, allModules ) <- parseTestFiles files >>= \case
+ loadModulesErr files >>= \case
Right res -> do
return res
Left err -> do
@@ -154,10 +161,17 @@ loadModules files = do
_ -> do
putStrLn (showErrorComponent err)
exitFailure
- let globalDefs = evalGlobalDefs $ concatMap (\m -> map (first ( moduleName m, )) $ moduleDefinitions m) allModules
- evalTags test = map (\e -> runSimpleEval (eval e) globalDefs []) $ testTags test
- tags = concatMap (\Module {..} -> map (\test -> ( ( moduleName, testName test ), evalTags test )) moduleTests) modules
- return ( modules, tags, globalDefs )
+
+loadModulesErr :: [ FilePath ] -> IO (Either CustomTestError LoadedModules)
+loadModulesErr files = do
+ parseTestFiles files >>= \case
+ Right ( lmModules, allModules ) -> do
+ let lmGlobalDefs = evalGlobalDefs $ concatMap (\m -> map (first ( moduleName m, )) $ moduleDefinitions m) allModules
+ evalTags test = map (\e -> runSimpleEval (eval e) lmGlobalDefs []) $ testTags test
+ lmTags = concatMap (\Module {..} -> map (\test -> ( ( moduleName, testName test ), evalTags test )) moduleTests) lmModules
+ return $ Right $ LoadedModules {..}
+ Left err -> do
+ return $ Left err
evalGlobalDefs :: [ (( ModuleName, VarName ), SomeExpr ) ] -> GlobalDefs