C TAP Harness

Blurb

C TAP Harness is a pure-C implementation of TAP, the Test Anything Protocol. TAP is the text-based protocol used by Perl's test suite. This package provides a harness similar to Perl's Test::Harness for running tests, with some additional features useful for test suites in packages that use Autoconf and Automake, and C and shell libraries to make writing TAP-compliant test programs easier.

Description

This package started as the runtests program I wrote for INN in 2000 to serve as the basis for a new test suite using a test protocol similar to that used for Perl modules. When I started maintaining additional C packages, I adopted runtests for the test suite driver of those as well, resulting in further improvements but also separate copies of the same program in different distributions. The C TAP Harness distribution merges all the various versions into a single code base that all my packages can pull from.

C TAP Harness provides a full TAP specification driver (apart from a few possible edge cases) and has additional special features for supporting builds outside the source directory. It's mostly useful for packages using Autoconf and Automake and because it doesn't assume or require Perl.

The runtests program can be built with knowledge of the source and build directory and pass that knowledge on to test scripts, and will search for test scripts in both the source and build directory. This makes it easier for packages using Autoconf and Automake and supporting out-of-tree builds to build some test programs, ship others, and run them all regardless of what tree they're in. It also makes it easier for test cases to find their supporting files when they run.

Also included in this package are C and shell libraries that provide utility functions for writing test scripts that use TAP to report results. The C library also provides a variety of utility functions useful for test programs running as part of an Automake-built package: finding test data files, creating temporary files, reporting output from external programs running in the background, and similar common problems.

Requirements

C TAP Harness requires a C compiler to build. Any ISO C89 or later C compiler on a system supporting the Single UNIX Specification, version 3 (SUSv3) should be sufficient. This should not be a problem on any modern system. The test suite and shell library require a Bourne-compatible shell. Outside of the test suite, C TAP Harness has no other prerequisites or requirements.

To run the test suite, you will need Perl plus the Perl module Test::More, which comes with Perl 5.8 or later. The following additional Perl modules will be used by the test suite if present:

All are available on CPAN. Those tests will be skipped if the modules are not available.

To bootstrap from a Git checkout, or if you change the Automake files and need to regenerate Makefile.in, you will need Automake 1.11 or later. For bootstrap or if you change configure.ac or any of the m4 files it includes and need to regenerate configure or config.h.in, you will need Autoconf 2.64 or later. Perl is also required to generate manual pages from a fresh Git checkout.

Download

The distribution:

C TAP Harness 4.0 2016-05-07 tar.gz (PGP signature) tar.xz (PGP signature)

An archive of older releases is also available.

C TAP Harness is maintained using the Git version control system. To check out the current development tree, see GitHub or clone:

    https://git.eyrie.org/git/devel/c-tap-harness.git

Pull requests on GitHub are welcome. You can also browse the current development source.

Documentation

User documentation:

Developer documentation:

API documentation:

License

The C TAP Harness package as a whole is covered by the following copyright and license:

Copyright 2000-2001, 2004, 2006-2016 Russ Allbery <eagle@eyrie.org>

Copyright 2006-2009, 2011-2013 The Board of Trustees of the Leland Stanford Junior University

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Some individual source files are covered by other, compatible licenses. For complete copyright and license information, see the file LICENSE in the C TAP Harness source distribution.

Last modified and spun 2016-11-05