runIO -package:hspec-core
runIO is wrapped around every
foreign export and
foreign import "wrapper" to mop up any uncaught exceptions.
Thus, the result of running
exitWith in a foreign-exported
function is the same as in the main thread: it terminates the program.
Run an IO action while constructing the spec tree.
SpecM is a monad to construct a spec tree, without executing
any spec items itself.
runIO allows you to run IO actions
during this construction phase. The IO action is always run when the
spec tree is constructed (e.g. even when
--dry-run is
specified). If you do not need the result of the IO action to
construct the spec tree,
beforeAll may be more suitable for
your use case.
The
runIO function lets you run an I/O computation in the
Q monad. Take care: you are guaranteed the ordering of calls to
runIO within a single
Q computation, but not about the
order in which splices are run.
Note: for various murky reasons, stdout and stderr handles are not
necessarily flushed when the compiler finishes running, so you should
flush them yourself.
Run a test suite during test suite definition.
This function only exists for backward compatibility. You can also
just use
liftIO instead.
Launching a receiver and a sender.
Launching a receiver and a sender without workers. Any frames can be
sent with sioWriteBytes.
Run an IO action while constructing the spec tree.
SpecM is a monad to construct a spec tree, without executing
any spec items.
runIO allows you to run IO actions during
this construction phase. The IO action is always run when the spec
tree is constructed (e.g. even when
--dry-run is specified).
If you do not need the result of the IO action to construct the spec
tree,
beforeAll may be more suitable for your use case.
Run an IO action without parsing anything
This action may be run more than once, so prefer to do IO outside of
the parser.
Run a LiterateX transformation using IO
This function works with the following input line producers:
This function works with the following output line consumers:
Like
runIO, but in the event of an exception that causes an
exit, we don't shut down the system cleanly, we just exit. This is
useful in some cases, because the safe exit version will give other
threads a chance to clean up first, which might shut down the system
in a different way. For example, try
main = forkIO (runIO (exitWith (ExitFailure 1))) >> threadDelay
10000
This will sometimes exit with "interrupted" and code 0, because the
main thread is given a chance to shut down when the child thread calls
safeExit. There is a race to shut down between the main and child
threads.
Evaluate a
PandocIO operation, handling any errors by exiting
with an appropriate message and error status.
Run the action associated with the finalizer and deactivate it so that
it never runs again. Note, the finalizing action runs with async
exceptions masked.
If this function is called multiple times, the action is guaranteed to
run once and only once.
Pre-release
Input/output (dangerous). See
runIO.