diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-04-16 21:44:20 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-04-18 22:25:18 +0200 |
commit | baa086bd025ce49a75d8cc9d64d24615ab960357 (patch) | |
tree | f1ce6d3a889a91a3efaa43c08e26171267f6dc38 /src/Run.hs | |
parent | f0eed671c65a31eeb34ece14547bea79eb753728 (diff) |
Shell interpreter for test script
Changelog: Experimental shell interpreter
Diffstat (limited to 'src/Run.hs')
-rw-r--r-- | src/Run.hs | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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 |