name: shelltestrunner version: 0.8 x-revision: 1 category: Testing synopsis: A tool for testing command-line programs. description: . Run a command-line program through \"shell tests\" defined in one or more test files. Each test specifies command-line arguments, some input, and expected output, stderr output and/or exit status. We use test-framework's test runner, so can run tests in parallel. shelltestrunner was inspired by the tests in John Wiegley's ledger project. . Usage: . > shelltest [FLAG] [TESTFILES|TESTDIRS] > > > -? --help[=FORMAT] Show usage information (optional format) > -V --version Show version information > -v --verbose Higher verbosity > -q --quiet Lower verbosity > -d --debug show debug messages > --debug-parse show parsing debug messages and stop > --execdir run tests in same directory as test file > --extension=EXT extension of test files when dirs specified (default=.test) > -i --implicit=none|exit|all provide implicit tests (default=exit) > -w --with=EXECUTABLE alternate executable, replaces the first word of test commands > =OTHER FLAGS any other flags are passed to test runner > > A test file contains one or more shell tests, which look like this: > > # optional comment lines > a one-line shell command to be tested > <<< > stdin lines > >>> [/regexp to match in stdout/] > [or expected stdout lines > >>>2 [/regexp to match in stderr/] > [or expected stderr lines] > >>>= expected exit status or /regexp/ > > The command line is required; all other fields are optional. > The expected stdout (>>>) and expected stderr (>>>2) fields can have either > a regular expression match pattern, in which case the test passes if the > output is matched, or 0 or more data lines, in which case the output > must match these exactly. The expected exit status (>>>=) field can have > either a numeric exit code or a /regexp/. A ! preceding a /regexp/ or exit > code negates the match. The regular expression syntax is that of the > pcre-light library with the dotall flag. > > By default there is an implicit test for exit status=0, but no implicit test > for stdout or stderr. You can change this with -i/--implicit-tests. > > The command runs in your current directory unless you use --execdir. > You can use --with/-w to replace the first word of command lines > (everything up to the first space) with something else, eg to test a > different version of your program. To prevent this, start the command line > with a space. > > Any unrecognised options will be passed through to test-framework's runner. > You may be able to get a big speedup by running tests in parallel: try -j8. . license: GPL license-file: LICENSE author: Simon Michael maintainer: Simon Michael homepage: http://joyful.com/darcsweb/darcsweb.cgi?r=shelltestrunner bug-reports: mailto:simon@joyful.com stability: beta tested-with: GHC==6.10 cabal-version: >= 1.6 build-type: Simple extra-tmp-files: extra-source-files: executable shelltest main-is: shelltest.hs ghc-options: -Wall -threaded build-depends: base >= 3 && < 4.18 ,parsec ,process ,HUnit ,test-framework ,test-framework-hunit >= 0.2 ,cmdargs >= 0.1 ,pcre-light >= 0.3.1 ,directory ,filepath ,FileManipCompat source-repository head type: darcs location: http://joyful.com/repos/hledger