summaryrefslogtreecommitdiff
path: root/src/Run.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-04-16 21:44:20 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2025-04-18 22:25:18 +0200
commitbaa086bd025ce49a75d8cc9d64d24615ab960357 (patch)
treef1ce6d3a889a91a3efaa43c08e26171267f6dc38 /src/Run.hs
parentf0eed671c65a31eeb34ece14547bea79eb753728 (diff)
Shell interpreter for test script
Changelog: Experimental shell interpreter
Diffstat (limited to 'src/Run.hs')
-rw-r--r--src/Run.hs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Run.hs b/src/Run.hs
index ed91936..b7093f4 100644
--- a/src/Run.hs
+++ b/src/Run.hs
@@ -33,6 +33,7 @@ import Output
import Process
import Run.Monad
import Script.Expr
+import Script.Shell
import Test
import Test.Builtins
@@ -72,7 +73,7 @@ runTest out opts gdefs test = do
let sigHandler SignalInfo { siginfoSpecific = chld } = do
processes <- readMVar procVar
forM_ processes $ \p -> do
- mbpid <- getPid (procHandle p)
+ mbpid <- either getPid (\_ -> return Nothing) (procHandle p)
when (mbpid == Just (siginfoPid chld)) $ flip runReaderT out $ do
let err detail = outProc OutputChildFail p detail
case siginfoStatus chld of
@@ -131,6 +132,10 @@ evalBlock (TestBlockStep prev step) = evalBlock prev >> case step of
tool = fromMaybe (optDefaultTool opts) (lookup pname $ optProcTools opts)
withProcess (Right node) pname Nothing tool $ evalBlock . inner
+ SpawnShell (TypedVarName (VarName tname)) node script inner -> do
+ let pname = ProcName tname
+ withShellProcess node pname script $ evalBlock . inner
+
Send p line -> do
outProc OutputChildStdin p line
send p line