The boxes sources have a low-tech test suite in the test subdirectory. Our continuous integration pipeline will execute it in order to make sure that a change did not break the program.
Start the entire suite by running
make && make test from the top level directory.
Run an individual test by calling
./testrunner.sh testcase.txt from the test directory.
Each test case is a single file within the test subdirectory. It must follow this naming convention:
nnn is a three-digit number which uniquely identifies the test case.
description is any short text that
describes what the test case does. It must not contain spaces; use underscores instead. The file extension is always
A test case that tests a successful invocation of boxes looks like this:
:DESC Tests invoking boxes with a fixed result box size. :ARGS -s 10x4 :INPUT foo :OUTPUT-FILTER :EXPECTED /********/ /* foo */ /* */ /********/ :EOF
Sections may be empty, e.g. if there are no arguments or there is no input. The
:DESC section is optional, so it is
valid if the test case starts with an
:ARGS section. The order of sections is fixed.
A test case that makes sure boxes fails under certain conditions looks like this:
:DESC Tests that the right error message is shown when the boxes config file cannot be found. :ARGS -f nonexistent :INPUT :OUTPUT-FILTER :EXPECTED-ERROR 1 boxes: Couldn't find config file at 'nonexistent' :EOF
Note that you write
:EXPECTED-ERROR instead of just
:EXPECTED, and the expected return code is given after a space
(in this example, it is
:OUTPUT-FILTER section can be used to give a sed script which is run on the actual output before comparing it
to the expected output
This way, differences in output that occur because of platform differences can be filtered out. The general advice is
to leave this section empty unless you are facing a situation where there is no other solution.