name: shelltestrunner
version: 0.4
category: Testing
synopsis: A tool for testing command-line programs.
description:
.
Run a given program through "shell" tests specifed by one or more test
files, each of which can specify: command-line arguments, input, expected
output, expected stderr output, and expected exit code. This was
extracted from the hledger project, inspired by the tests in John
Wiegley's ledger project, and uses test-framework's test runner.
.
Usage:
.
> shelltestrunner [opts] executable testfile1 [testfile2 ...] [-- <test-framework runner opts>]
.
You can pass options through to test-framework's runner; they must go
after -- at the end. You may be able to get a big speedup by running
tests in parallel: try -- -j8.
.
Test file format:
.
> # 0 or more comment lines beginning with #
> -opt1 -opt2 arg1 arg2 # command line args, executable will be prepended
> <<<
> 0 or more lines of input
> >>> [/regexp/]
> [..or 0 or more lines of expected output]
> >>>2 [/regexp/]
> [..or 0 or more lines of expected error output]
> >>>= [/regexp/]
> [..or expected numeric exit code]
.
The expected fields can also have a regular expression match expression
following the delimiter on the same line, with no other data lines, in
which case the test passes if the output is matched by the regexp. The
regexp is enclosed in forward slashess. A ! preceding the expression
negates the match. For example, to check that stdout does not contain
"axe":
.
> >>> !/axe/
.
Apart from the command line, all fields are optional. Only fields
specified in the test will be tested, unless you use the
-i/--implicit-tests flag, which will test for empty stdout, empty stderr,
or 0 exit code whenever fields are omitted.
.
Issues:
.
- output order is mixed up
.
- option processing is weak
.
- can't test input/output which does not end with newline
.
Wishlist:
.
- configurable delimiters
.
- multiple tests per file
.
license: GPL
license-file: LICENSE
author: Simon Michael <simon@joyful.com>
maintainer: Simon Michael <simon@joyful.com>
homepage: http://joyful.com/darcsweb/darcsweb.cgi?r=shelltestrunner
-- bug-reports:
stability: experimental
tested-with: GHC==6.10
cabal-version: >= 1.2
build-type: Simple
extra-tmp-files:
extra-source-files:
executable shelltestrunner
main-is: shelltestrunner.hs
ghc-options: -Wall -threaded
build-depends:
base >= 3 && < 5
,parsec
,process
,HUnit
,test-framework
,test-framework-hunit >= 0.2 && < 0.3
,parseargs >= 0.1 && < 0.2
,regexpr >= 0.5.1