Each test is a shell script. Tests that share files (e.g.,
.cabal files) are
grouped under a common sub-directory of IntegrationTests. The framework
copies the whole group's directory before running each test, which allows tests
to reuse files, yet run independently. A group's tests are further divided into
should_fail directories, based on the expected exit status.
For example, the test
IntegrationTests/exec/should_fail/exit_with_failure_without_args.sh has access
to all files under
exec and is expected to fail.
Tests can specify their expected output. For a test named
stderr. Both files are optional.
The framework expects an exact match between lines in the file and output,
except for lines beginning with "RE:", which are interpreted as regular
IntegrationTests.hs defines several environment variables:
CABAL- The path to the executable being tested.
GHC_PKG- The path to ghc-pkg.
CABAL_ARGS- A common set of arguments for running cabal.