process-1.3.0.0: test/main.hs
import Control.Exception
import System.Exit
import System.IO.Error
import System.Process
main :: IO ()
main = do
res <- handle (return . Left . isDoesNotExistError) $ do
(_, _, _, ph) <- createProcess (proc "definitelydoesnotexist" [])
{ close_fds = True
}
fmap Right $ waitForProcess ph
case res of
Left True -> return ()
_ -> error $ show res
let test name modifier = do
putStrLn $ "Running test: " ++ name
(_, _, _, ph) <- createProcess
$ modifier $ proc "echo" ["hello", "world"]
ec <- waitForProcess ph
if ec == ExitSuccess
then putStrLn $ "Success running: " ++ name
else error $ "echo returned: " ++ show ec
test "detach_console" $ \cp -> cp { detach_console = True }
test "create_new_console" $ \cp -> cp { create_new_console = True }
test "new_session" $ \cp -> cp { new_session = True }
putStrLn "Tests passed successfully"