polysemy-process-0.5.0.0: test/Polysemy/Process/Test/ProcessTest.hs
{-# options_ghc -fplugin=Polysemy.Plugin #-}
module Polysemy.Process.Test.ProcessTest where
import qualified Data.ByteString as ByteString
import Polysemy.Async (asyncToIOFinal)
import Polysemy.Conc.Interpreter.Race (interpretRace)
import Polysemy.Resume (resuming)
import Polysemy.Test (UnitTest, runTestAuto, (===))
import qualified System.Process.Typed as Process
import System.Process.Typed (ProcessConfig)
import qualified Polysemy.Process.Effect.Process as Process
import Polysemy.Process.Effect.Process (withProcess)
import Polysemy.Process.Interpreter.ProcessIOE (interpretProcessIOE)
config :: ProcessConfig () () ()
config =
Process.proc "cat" []
message :: ByteString
message =
ByteString.replicate 10 120
test_process :: UnitTest
test_process =
runTestAuto $ interpretRace $ asyncToIOFinal $ interpretProcessIOE True 10 config do
withProcess do
response <- resuming (pure . show) do
Process.send message
Process.recv
message === response