Maintainer Automated Testing Instructions
*****************************************

Automated testing is available for the project. It can be used to write tests
for batched and interactive command-line utilities. DejaGNU is the framework
used. Testing is not a mandatory requirement when building, however it is
strongly encouraged.

Tests may be run after building the project with the following command:

    make check

And the quick-and-dirty method to see if all tests passed is to look at the
last line of output which indicates the number of expected passes and
failures. Any 'unexpected' results are the ones to be concerned about.
Assuming there are 50 tests for a project, the ideal output might be:

    === <TESTSUITE_NAME> Summary ===
    # of expected passes    24

Test output is available in testlog/ with *.log and *.sum for log and
summary files, respectively.


Requirements
------------

The testsuite is fairly new so the requirements may or may not be strict.
Listed here are the versions used to by maintainers; be aware that
this testing framework is generally a unix solution only.

    expect 5.43.0
    Tcl 8.5
    DejaGNU 1.4.4


DejaGNU Framework
-----------------

The framework is relatively thin; basically a wrapper around things which
can be made to work relatively easily with Autotools. The underlying
tests are actually written using expect/tcl. However, since this project
does not have any interactive command-line tools, the interactive nature
of expect is not leveraged. Thus, most tests have so far been written
using more or less Tcl with the DejaGNU framework.


File Locations
--------------

All tests are stored in testsuite/ and generally any C/C++ code require
for testing should reside therein. However, sometimes a test utility proves
to be quite useful on its own and may be moved outside of testsuite/ .

In the future we can for example create tests which might test certain
aspects of the API; here are some useful examples:

    - assert public C API header compiles
    - assert private symbols are not available to public compile/linking
    - assert contents of MP4Dump output are sane
    - etc...

Hopefully as new tests are added they will serve as good examples.
