ϊΞAλ:­‹      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰ŠNoneM       None 06=BKMa,Sets a custom variable in the sandbox monad.b-Checks that a custom sandbox variable is set.c]Returns the value of a previously set sandbox variable (or a provided default value if unset)dUnsets a custom variable.` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a!Variable key for future referenceVariable valueb Variable keyc Variable keyDefault value if not foundd Variable keyefghijklmnop] !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm`;89:567p<=>+,-./01234!"#$%&'()* ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijonklm> ! "#$%&'()*+ ,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop)Benjamin Surma <benjamin.surma@gmail.com>NoneMqDOptional parameters when registering a process in the Sandbox monad.sATime to wait (in s.) before checking that the process is still upt!Which outputs to capture (if any)u@Creates a sandbox and execute the given actions in the IO monad.w)Registers a process in the Sandbox monad.x[Communicates with a sandboxed process via TCP and returns the answered message as a string.yˆStarts the given process, runs the action, then stops the process. The process is managed by the functions start and stop respectively.z[Helper function: starts a process, wait for it to terminate and return its captured output.{0Starts a previously registered process (verbose)|=Starts all registered processes (in their registration order)}7Gracefully stops a previously started process (verbose)~!Sends a POSIX signal to a processOGracefully stops all registered processes (in their reverse registration order)€:Returns the effective binary path of a registered process.UReturns the handles used to communicate with a registered process using standard I/O.‚6Returns the last captured output of a started process.ƒ4Interacts with a sandboxed process via standard I/O.„DReturns an unbound user TCP port and stores it for future reference.…2Explicitely sets a port to be returned by getPort.†=Creates a temporary file in the sandbox and returns its path.‡9Returns the path of a file previously created by setFile.ˆBTemporarily sets a variable for the execution of the given action.‰EReturns the temporary directory used to host the sandbox environment.Š#Executes the given action silently.qrst‹uName of the sandbox environmentAction to performvw Process namePath to the application binary%Arguments to pass on the command-lineProcess settingsxName of the registered port  Input string.Time to wait before timeout (in milli-seconds)y Process name Action to runz{ Process name|Œ} Process name~ Process nameSignal to send€ Process name Process name‚ Process nameƒ Process name Input string.Time to wait before timeout (in milli-seconds)„Port name for future reference…Port name for future referenceTCP port number†File name for future reference File contents‡File name used during setFileˆ Variable keyVariable value Action to run‰ŠAction to execute+ 8<>abcdqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š+8qrst uv<>wzy{|}~Šƒx‚„€…‡†‰bcadˆqrst‹uvwxyz{|Œ}~€‚ƒ„…†‡ˆ‰ŠŽ   !"#$%&'()*++,-./01234456789:;<==>??@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“test-sandbox-0.0.1.13 Test.SandboxTest.Sandbox.ProcessTest.Sandbox.Internalsdata-default-class-0.0.1Data.Default.Classdeflifted-base-0.2.3.3Control.Exception.Liftedfinallybrackettransformers-0.4.2.0Control.Monad.IO.ClassliftIO mtl-2.2.1Control.Monad.Error.Class catchError throwError ProcessInfopiPidpiStatpiPpidpiPgidgetProcessInfogetProcessInfosgetProcessGroupIDs getProcessIDscleanUpProcessGroupIDsSandboxTestOptionsstoSeedstoMaximumGeneratedTests"stoMaximumUnsuitableGeneratedTestsstoMaximumTestSize SandboxSeedSandboxRandomSeedSandboxFixedSeedSandboxedProcessInstanceStoppedInstanceRunningInstanceCapture CaptureBoth CaptureStderr CaptureStdoutSandboxedProcessspNamespBinaryspArgsspWait spCapture spInstancespPidspPGid SandboxStatessName ssDataDir ssProcessesssProcessOrderssAllocatedPortsssAvailablePortsssFiles ssVariables StMSandbox runStMSandboxSandboxrunSBSandboxStateRef runSandbox errorHandler runSandbox'getputprettyheaderfooternewSandboxStateregisterProcessisValidProcessName getProcess updateProcess secondInΒ΅ssetFile' bufferSizehReadWithTimeout sendToPort getNewPort isBindable startProcessformatCommandLine stopProcessgetAvailablePidscleanUpProcesseshSignalProcess killProcess hGetProcessIDinteractWithProcessgetProcessInputHandlegetProcessCapturedOutputHandlegetProcessBinaryfindExecutables tryBinarygetProcessCandidateBinariesexpandwhenM setVariable checkVariable getVariable unsetVariable isVerbose verbosityKey isCleanUp cleanUpKey displayBannerinstallSignalHandlers putOptions getOptionsoptionsVariable$fSerializeSandboxTestOptions$fSerializeSandboxSeed$fMonadBaseControlIOSandboxProcessSettingspsWait psCapturesandbox withSandboxregistersendTo withProcessrunstartstartAllstopsignalstopAll getBinary getHandlesreadLastCapturedOutput interactWithgetPortsetPortsetFilegetFile withVariable getDataDirsilentlycleanUpwaitFor$fDefaultProcessSettings