testcode
========

testcode is a python module for testing for regression errors in numerical
(principally scientific) software.  Essentially testcode runs a set of
calculations, and compares the output data to that generated by a previous
calculation (which is regarded to be "correct").  It is designed to be
lightweight and highly portable: it can be used both as part of the development
process and to verify the correctness of a binary on a new architecture.
testcode requires python 2.4-3.4.  If these are not available, then `pypy
<http://www.pypy.org>`_ is recommended---for this purpose pypy serves as
a portable, self-contained python implementation but this is a tiny aspect of
the pypy project.

testcode can run a set of tests and check the calculated data is within a the
desired tolerance of results contained in previous output (using an internal
data extraction engine, a user-supplied data extraction program or
a user-supplied verification program).  The programs to be tested can be run in
serial and in parallel and tests can be run in either locally or submitted to
a compute cluster running a queueing system such as PBS.  Previous tests can be
compared and diffed against other tests or benchmarks.

testcode provides access to these features via an API.  The supplied
command-line interface, :ref:`testcode.py`, should be sufficient for most
purposes.  The command-line interface utilises simple :ref:`configuration files
<config>`, wich makes it easy to customise to the local environment and to add
new tests.

.. toctree::
   :maxdepth: 1

   installation
   configuration_files
   jobconfig
   userconfig
   verification
   testcode.py

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
