diff options
author | Russ Allbery <rra@cpan.org> | 2019-03-28 14:24:58 -0700 |
---|---|---|
committer | Russ Allbery <rra@cpan.org> | 2019-03-28 14:24:58 -0700 |
commit | 9895b736c5efb92658192f5bbacc3a462eb5008f (patch) | |
tree | 4896e5e5f85f7ebb607a9ab4d78d411ef80f5061 /t/data/generate/c-tap-harness/output | |
parent | 6a912c2019472744c65563c6afec1435631a0afb (diff) |
Move test data for generate to a subdirectory
Clear space for other directories of test data for other DocKnot
functions.
Diffstat (limited to 't/data/generate/c-tap-harness/output')
-rw-r--r-- | t/data/generate/c-tap-harness/output/readme | 292 | ||||
-rw-r--r-- | t/data/generate/c-tap-harness/output/readme-md | 296 | ||||
-rw-r--r-- | t/data/generate/c-tap-harness/output/thread | 220 |
3 files changed, 808 insertions, 0 deletions
diff --git a/t/data/generate/c-tap-harness/output/readme b/t/data/generate/c-tap-harness/output/readme new file mode 100644 index 0000000..b75f7d6 --- /dev/null +++ b/t/data/generate/c-tap-harness/output/readme @@ -0,0 +1,292 @@ + C TAP Harness 4.0 + (C harness for running TAP-compliant tests) + Maintained by Russ Allbery <eagle@eyrie.org> + + 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. This software is distributed under a + BSD-style license. Please see the section LICENSE below for more + information. + +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: + + * Test::Pod + * Test::Spelling + + 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. + +BUILDING + + You can build C TAP Harness with the standard commands: + + ./configure + make + + If you are building from a Git clone, first run ./bootstrap in the + source directory to generate the build files. Building outside of the + source directory is also supported, if you wish, by creating an empty + directory and then running configure with the correct relative path. + + Pass --enable-silent-rules to configure for a quieter build (similar to + the Linux kernel). Use make warnings instead of make to build with full + compiler warnings (requires either GCC or Clang and may require a + relatively current version of the compiler). + + Installing C TAP Harness is not normally done. Instead, see the section + on using the harness below. + +TESTING + + C TAP Harness comes with a comprehensive test suite, which you can run + after building with: + + make check + + If a test fails, you can run a single test with verbose output via: + + ./runtests -b `pwd`/tests -s `pwd`/tests -o <name-of-test> + + Do this instead of running the test program directly since it will + ensure that necessary environment variables are set up. You may need to + change the -s option argument if you build with a separate build + directory from the source directory. + +USING THE HARNESS + + While there is an install target that installs runtests in the default + binary directory (/usr/local/bin by default) and installs the man pages, + one normally wouldn't install anything from this package. Instead, the + code is intended to be copied into your package and refreshed from the + latest release of C TAP Harness for each release. + + You can obviously copy the code and integrate it however works best for + your package and your build system. Here's how I do it for my packages + as an example: + + * Create a tests directory and copy tests/runtests.c into it. Create a + tests/tap subdirectory and copy the portions of the TAP library (from + tests/tap) that I need for that package into it. The TAP library is + designed to let you drop in additional source and header files for + additional utility functions that are useful in your package. + + * Add code to my top-level Makefile.am (I always use a non-recursive + Makefile with subdir-objects set) to build runtests and the test + library: + + check_PROGRAMS = tests/runtests + tests_runtests_CPPFLAGS = -DC_TAP_SOURCE='"$(abs_top_srcdir)/tests"' \ + -DC_TAP_BUILD='"$(abs_top_builddir)/tests"' + check_LIBRARIES = tests/tap/libtap.a + tests_tap_libtap_a_CPPFLAGS = -I$(abs_top_srcdir)/tests + tests_tap_libtap_a_SOURCES = tests/tap/basic.c tests/tap/basic.h \ + tests/tap/float.c tests/tap/float.h tests/tap/macros.h + + Omit float.c and float.h from the last line if your package doesn't + need the is_double function. Building the build and source + directories into runtests will let tests/runtests -o <test> work for + users without requiring that they set any other variables, even if + they're doing an out-of-source build. + + Add additional source files and headers that should go into the TAP + library if you added extra utility functions for your package. + + * Add code to Makefile.am to run the test suite: + + check-local: $(check_PROGRAMS) + cd tests && ./runtests -l $(abs_top_srcdir)/tests/TESTS + + See the Makefile.am in this package for an example. + + * List the test programs in the tests/TESTS file. This should have the + name of the test executable with the trailing "-t" or ".t" (you can + use either extension as you prefer) omitted. + + Test programs must be executable. + + For any test programs that need to be compiled, add build rules for + them in Makefile.am, simliar to: + + tests_libtap_c_basic_LDADD = tests/tap/libtap.a + + and add them to check_PROGRAMS. If you include the float.c add-on in + your libtap library, you will need to add -lm to the _LDADD setting + for all test programs linked against it. + + A more complex example from the remctl package that needs additional + libraries: + + tests_client_open_t_LDFLAGS = $(GSSAPI_LDFLAGS) + tests_client_open_t_LDADD = client/libremctl.la tests/tap/libtap.a \ + util/libutil.la $(GSSAPI_LIBS) + + If the test program doesn't need to be compiled, add it to EXTRA_DIST + so that it will be included in the distribution. + + * If you have test programs written in shell, copy tests/tap/libtap.sh + the tap subdirectory of your tests directory and add it to EXTRA_DIST. + Shell programs should start with: + + . "${C_TAP_SOURCE}/tap/libtap.sh" + + and can then use the functions defined in the library. + + * Optionally copy docs/writing-tests into your package somewhere, such + as tests/README, as instructions to contributors on how to write tests + for this framework. + + If you have configuration files that the user must create to enable some + of the tests, conventionally they go into tests/config. + + If you have data files that your test cases use, conventionally they go + into tests/data. You can then find the data directory relative to the + C_TAP_SOURCE environment variable (set by runtests) in your test + program. If you have data that's compiled or generated by Autoconf, it + will be relative to the BUILD environment variable. Don't forget to add + test data to EXTRA_DIST as necessary. + + For more TAP library add-ons, generally ones that rely on additional + portability code not shipped in this package or with narrower uses, see + the rra-c-util package [1]. There are several additional TAP library + add-ons in the tests/tap directory in that package. It's also an + example of how to use this test harness in another package. + + [1] https://www.eyrie.org/~eagle/software/rra-c-util/ + +SUPPORT + + The C TAP Harness web page at: + + https://www.eyrie.org/~eagle/software/c-tap-harness/ + + will always have the current version of this package, the current + documentation, and pointers to any additional resources. + + For bug tracking, use the issue tracker on GitHub: + + https://github.com/rra/c-tap-harness/issues + + However, please be aware that I tend to be extremely busy and work + projects often take priority. I'll save your report and get to it as + soon as I can, but it may take me a couple of months. + +SOURCE REPOSITORY + + C TAP Harness is maintained using Git. You can access the current + source on GitHub at: + + https://github.com/rra/c-tap-harness + + or by cloning the repository at: + + https://git.eyrie.org/git/devel/c-tap-harness.git + + or view the repository via the web at: + + https://git.eyrie.org/?p=devel/c-tap-harness.git + + The eyrie.org repository is the canonical one, maintained by the author, + but using GitHub is probably more convenient for most purposes. Pull + requests are gratefully reviewed and normally accepted. + +LICENSE + + The C TAP Harness package as a whole is covered by the following + copyright statement 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 files in this distribution are individually released under + different licenses, all of which are compatible with the above general + package license but which may require preservation of additional + notices. All required notices, and detailed information about the + licensing of each file, are recorded in the LICENSE file. + + Files covered by a license with an assigned SPDX License Identifier + include SPDX-License-Identifier tags to enable automated processing of + license information. See https://spdx.org/licenses/ for more + information. + + For any copyright range specified by files in this package as YYYY-ZZZZ, + the range specifies every single year in that closed interval. diff --git a/t/data/generate/c-tap-harness/output/readme-md b/t/data/generate/c-tap-harness/output/readme-md new file mode 100644 index 0000000..c744386 --- /dev/null +++ b/t/data/generate/c-tap-harness/output/readme-md @@ -0,0 +1,296 @@ +# C TAP Harness 4.0 + +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. This software is distributed under a +BSD-style license. Please see the section [License](#license) below for +more information. + +## 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: + +* Test::Pod +* Test::Spelling + +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. + +## Building + +You can build C TAP Harness with the standard commands: + +``` + ./configure + make +``` + +If you are building from a Git clone, first run `./bootstrap` in the +source directory to generate the build files. Building outside of the +source directory is also supported, if you wish, by creating an empty +directory and then running configure with the correct relative path. + +Pass `--enable-silent-rules` to configure for a quieter build (similar to +the Linux kernel). Use `make warnings` instead of `make` to build with +full GCC compiler warnings (requires either GCC or Clang and may require a +relatively current version of the compiler). + +Installing C TAP Harness is not normally done. Instead, see the section +on using the harness below. + +## Testing + +C TAP Harness comes with a comprehensive test suite, which you can run +after building with: + +``` + make check +``` + +If a test fails, you can run a single test with verbose output via: + +``` + ./runtests -b `pwd`/tests -s `pwd`/tests -o <name-of-test> +``` + +Do this instead of running the test program directly since it will ensure +that necessary environment variables are set up. You may need to change +the `-s` option argument if you build with a separate build directory from +the source directory. + +## Using the Harness + +While there is an install target that installs runtests in the default +binary directory (`/usr/local/bin` by default) and installs the man pages, +one normally wouldn't install anything from this package. Instead, the +code is intended to be copied into your package and refreshed from the +latest release of C TAP Harness for each release. + +You can obviously copy the code and integrate it however works best for +your package and your build system. Here's how I do it for my packages as +an example: + +* Create a tests directory and copy tests/runtests.c into it. Create a + `tests/tap` subdirectory and copy the portions of the TAP library (from + `tests/tap`) that I need for that package into it. The TAP library is + designed to let you drop in additional source and header files for + additional utility functions that are useful in your package. + +* Add code to my top-level `Makefile.am` (I always use a non-recursive + Makefile with `subdir-objects` set) to build `runtests` and the test + library: + + ```make + check_PROGRAMS = tests/runtests + tests_runtests_CPPFLAGS = -DC_TAP_SOURCE='"$(abs_top_srcdir)/tests"' \ + -DC_TAP_BUILD='"$(abs_top_builddir)/tests"' + check_LIBRARIES = tests/tap/libtap.a + tests_tap_libtap_a_CPPFLAGS = -I$(abs_top_srcdir)/tests + tests_tap_libtap_a_SOURCES = tests/tap/basic.c tests/tap/basic.h \ + tests/tap/float.c tests/tap/float.h tests/tap/macros.h + ``` + + Omit `float.c` and `float.h` from the last line if your package doesn't + need the `is_double` function. Building the build and source + directories into runtests will let `tests/runtests -o <test>` work for + users without requiring that they set any other variables, even if + they're doing an out-of-source build. + + Add additional source files and headers that should go into the TAP + library if you added extra utility functions for your package. + +* Add code to `Makefile.am` to run the test suite: + + ```make + check-local: $(check_PROGRAMS) + cd tests && ./runtests -l $(abs_top_srcdir)/tests/TESTS + ``` + + See the `Makefile.am` in this package for an example. + +* List the test programs in the `tests/TESTS` file. This should have the + name of the test executable with the trailing "-t" or ".t" (you can use + either extension as you prefer) omitted. + + Test programs must be executable. + + For any test programs that need to be compiled, add build rules for them + in `Makefile.am`, simliar to: + + ```make + tests_libtap_c_basic_LDADD = tests/tap/libtap.a + ``` + + and add them to `check_PROGRAMS`. If you include the `float.c` add-on + in your libtap library, you will need to add `-lm` to the `_LDADD` + setting for all test programs linked against it. + + A more complex example from the remctl package that needs additional + libraries: + + ```make + tests_client_open_t_LDFLAGS = $(GSSAPI_LDFLAGS) + tests_client_open_t_LDADD = client/libremctl.la tests/tap/libtap.a \ + util/libutil.la $(GSSAPI_LIBS) + ``` + + If the test program doesn't need to be compiled, add it to `EXTRA_DIST` + so that it will be included in the distribution. + +* If you have test programs written in shell, copy `tests/tap/libtap.sh` + the tap subdirectory of your tests directory and add it to `EXTRA_DIST`. + Shell programs should start with: + + ```sh + . "${C_TAP_SOURCE}/tap/libtap.sh" + ``` + + and can then use the functions defined in the library. + +* Optionally copy `docs/writing-tests` into your package somewhere, such + as `tests/README`, as instructions to contributors on how to write tests + for this framework. + +If you have configuration files that the user must create to enable some +of the tests, conventionally they go into `tests/config`. + +If you have data files that your test cases use, conventionally they go +into `tests/data`. You can then find the data directory relative to the +`C_TAP_SOURCE` environment variable (set by `runtests`) in your test +program. If you have data that's compiled or generated by Autoconf, it +will be relative to the `BUILD` environment variable. Don't forget to add +test data to `EXTRA_DIST` as necessary. + +For more TAP library add-ons, generally ones that rely on additional +portability code not shipped in this package or with narrower uses, see +[the rra-c-util +package](https://www.eyrie.org/~eagle/software/rra-c-util/). There are +several additional TAP library add-ons in the `tests/tap` directory in +that package. It's also an example of how to use this test harness in +another package. + +## Support + +The [C TAP Harness web +page](https://www.eyrie.org/~eagle/software/c-tap-harness/) will always +have the current version of this package, the current documentation, and +pointers to any additional resources. + +For bug tracking, use the [issue tracker on +GitHub](https://github.com/rra/c-tap-harness/issues). However, please be +aware that I tend to be extremely busy and work projects often take +priority. I'll save your report and get to it as soon as I can, but it +may take me a couple of months. + +## Source Repository + +C TAP Harness is maintained using Git. You can access the current source +on [GitHub](https://github.com/rra/c-tap-harness) or by cloning the +repository at: + +https://git.eyrie.org/git/devel/c-tap-harness.git + +or [view the repository on the +web](https://git.eyrie.org/?p=devel/c-tap-harness.git). + +The eyrie.org repository is the canonical one, maintained by the author, +but using GitHub is probably more convenient for most purposes. Pull +requests are gratefully reviewed and normally accepted. + +## License + +The C TAP Harness package as a whole is covered by the following copyright +statement 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 files in this distribution are individually released under different +licenses, all of which are compatible with the above general package +license but which may require preservation of additional notices. All +required notices, and detailed information about the licensing of each +file, are recorded in the LICENSE file. + +Files covered by a license with an assigned SPDX License Identifier +include SPDX-License-Identifier tags to enable automated processing of +license information. See https://spdx.org/licenses/ for more information. + +For any copyright range specified by files in this package as YYYY-ZZZZ, +the range specifies every single year in that closed interval. diff --git a/t/data/generate/c-tap-harness/output/thread b/t/data/generate/c-tap-harness/output/thread new file mode 100644 index 0000000..4001bef --- /dev/null +++ b/t/data/generate/c-tap-harness/output/thread @@ -0,0 +1,220 @@ +\==[doc] [2] [\bullet(packed)[\link[\1][\2]]] +\==[program] [3] + [\tablerow[\1 \version[\2]] [\release[\2]] + [\link[https://archives.eyrie.org/software/\3.tar.gz][tar.gz] + (\link[https://archives.eyrie.org/software/\3.tar.gz.asc] + [PGP signature])] + [\link[https://archives.eyrie.org/software/\3.tar.xz][tar.xz] + (\link[https://archives.eyrie.org/software/\3.tar.xz.asc] + [PGP signature])]] +\==[download] [3] + [\1 \version[\2]\break + \link[https://archives.eyrie.org/software/\3.tar.gz][tar.gz] + (\link[https://archives.eyrie.org/software/\3.tar.gz.asc] + [signature])\break + \link[https://archives.eyrie.org/software/\3.tar.xz][tar.xz] + (\link[https://archives.eyrie.org/software/\3.tar.xz.asc] + [signature])\break + Released \release[\2]] + +\heading[C TAP Harness][software] + +\h1[C TAP Harness] + +\div(sidebar)[ + \h2[Download] + + \download[C TAP Harness][c-tap-harness] + [devel/c-tap-harness-\version[c-tap-harness]] + + \link[https://archives.eyrie.org/software/ARCHIVE/c-tap-harness/] + [Archive] + + \h2[Documentation] + + \link[readme.html][General overview] \break + \link[news.html][Change summary] \break + \link[writing.html][Writing TAP tests] \break + \link[runtests.html][runtests manual page] + + \h2[Development] + + \link[todo.html][To-do list] \break + \link[https://github.com/rra/c-tap-harness] + [GitHub] \break + \link[https://github.com/rra/c-tap-harness/issues] + [Bug tracker] \break + \link[https://git.eyrie.org/?p=devel/c-tap-harness.git] + [Git repository] \break + \link[https://www.openhub.net/p/c-tap-harness] + [Open HUB code analysis] +] + +\h2[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. + +\h2[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. + +\h2[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: + +\bullet(packed)[Test::Pod] +\bullet(packed)[Test::Spelling] + +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. + +\h2[Download] + +The distribution: + +\table[][ + \program[C TAP Harness][c-tap-harness] + [devel/c-tap-harness-\version[c-tap-harness]] +] + +An \link[https://archives.eyrie.org/software/ARCHIVE/c-tap-harness/] +[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 +\link[https://github.com/rra/c-tap-harness][GitHub] or clone: + +\pre[ https://git.eyrie.org/git/devel/c-tap-harness.git] + +Pull requests on GitHub are welcome. You can also +\link[https://git.eyrie.org/?p=devel/c-tap-harness.git][browse the current +development source]. + +\h2[Documentation] + +\div(left)[ + \class(first)[User documentation:] + + \doc[readme.html][README] + \doc[news.html][Change summary] + \doc[writing.html][Writing TAP tests] + \doc[runtests.html][runtests manual page] + \doc[license.html][License and copyright] + + Developer documentation: + + \doc[todo.html][To-do list] + \doc[https://github.com/rra/c-tap-harness] + [GitHub] + \doc[https://github.com/rra/c-tap-harness/issues] + [Bug tracker] + \doc[https://www.openhub.net/p/c-tap-harness] + [Open HUB code analysis] + +] + +\div(right)[ + \class(first)[API documentation:] + + \doc[bail.html][bail and sysbail] + \doc[bmalloc.html][bmalloc, bcalloc, brealloc, bstrdup, and bstrndup] + \doc[breallocarray.html][breallocarray] + \doc[diag.html][diag and sysdiag] + \doc[diag_file_add.html][diag_file_add and diag_file_remove] + \doc[is_int.html][is_bool, is_int, is_double, is_string, and is_hex] + \doc[ok.html][ok, okv, and ok_block] + \doc[plan.html][plan and plan_lazy] + \doc[skip.html][skip and skip_block] + \doc[skip_all.html][skip_all] + \doc[test_cleanup_register.html][test_cleanup_register] + \doc[test_file_path.html][test_file_path and test_file_path_free] + \doc[test_tmpdir.html][test_tmpdir and test_tmpdir_free] +] + +\h2(after)[License] + +The C TAP Harness package as a whole is covered by the following copyright +and license: + +\block[ + + 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 +\link[license.html][LICENSE] in the C TAP Harness source distribution. + +\signature |