{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
module Test.Syd.Process where
import System.IO
import System.Process
import Test.Syd
processSpec :: CreateProcess -> TestDefM outers (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) result -> TestDefM outers () result
processSpec :: CreateProcess
-> TestDefM
outers
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
result
-> TestDefM outers () result
processSpec CreateProcess
cp = SetupFunc (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> TestDefM
outers
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
result
-> TestDefM outers () result
forall inner (outers :: [*]) result.
SetupFunc inner
-> TestDefM outers inner result -> TestDefM outers () result
setupAround (SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> TestDefM
outers
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
result
-> TestDefM outers () result)
-> SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> TestDefM
outers
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
result
-> TestDefM outers () result
forall a b. (a -> b) -> a -> b
$ CreateProcess
-> SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
processSetupFunc CreateProcess
cp
outerProcessSpec :: CreateProcess -> TestDefM ((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) ': outers) inner result -> TestDefM outers inner result
outerProcessSpec :: CreateProcess
-> TestDefM
((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
: outers)
inner
result
-> TestDefM outers inner result
outerProcessSpec CreateProcess
cp = SetupFunc (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> TestDefM
((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
: outers)
inner
result
-> TestDefM outers inner result
forall outer (outers :: [*]) inner result.
SetupFunc outer
-> TestDefM (outer : outers) inner result
-> TestDefM outers inner result
setupAroundAll (SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> TestDefM
((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
: outers)
inner
result
-> TestDefM outers inner result)
-> SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> TestDefM
((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
: outers)
inner
result
-> TestDefM outers inner result
forall a b. (a -> b) -> a -> b
$ CreateProcess
-> SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
processSetupFunc CreateProcess
cp
processSetupFunc :: CreateProcess -> SetupFunc (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
processSetupFunc :: CreateProcess
-> SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
processSetupFunc CreateProcess
cp = IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> ((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
-> IO ())
-> SetupFunc
(Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
forall resource r.
IO resource -> (resource -> IO r) -> SetupFunc resource
bracketSetupFunc (CreateProcess
-> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
createProcess CreateProcess
cp) (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -> IO ()
cleanupProcess