opnsense-src/lib/libarchive/test
Tim Kientzle 68f0154dcf This commit updates libarchive to be compatible with
GNU tar 1.17's implementation of --posix --sparse,
at the cost of losing compatibility with GNU tar 1.16.
Fortunately, the 1.17 implementation actually makes sense,
so the libarchive code is now a bit more straightforward
than before.

Background:  GNU tar 1.16 defined a new way to store
sparse files in --posix archives.  Unfortunately,
the implementation incorrectly inserted several
blocks of null padding after each such entry.
As a result, non-GNU tar implementations saw the
archive as truncated after any sparse entry.
This was fixed in GNU tar 1.17 at the cost of
losing compatibility with GNU tar 1.16 for this
new format (which is not the default, so hopefully
rarely used).  Libarchive recently gained support
for reading the GNU tar 1.16 formats; this commit
updates it to read the GNU tar 1.17 variant instead.

Approved by: re (ksmith for libarchive portion)
Approved by: re (blanket for libarchive_test portion)
MFC after: 5 days
2007-08-18 21:53:25 +00:00
..
main.c Two minor nits: 2007-07-31 05:03:27 +00:00
Makefile New test suite test_read_pax_truncated probes libarchive 2007-07-13 15:14:35 +00:00
read_open_memory.c New file "read_open_memory.c" is a custom variant of 2007-07-13 15:12:52 +00:00
README libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test.h Report each failed test once, but keep a count and report that count 2007-07-14 17:52:01 +00:00
test_acl_basic.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_acl_pax.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_archive_api_feature.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_bad_fd.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_entry.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_read_compress_program.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_read_data_large.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_read_extract.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_read_format_ar.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_read_format_cpio_bin.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_cpio_bin_bz2.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_cpio_bin_gz.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_cpio_bin_Z.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_cpio_odc.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_cpio_svr4_gzip.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_cpio_svr4c_Z.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_empty.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_gtar_gz.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_gtar_sparse.c This commit updates libarchive to be compatible with 2007-08-18 21:53:25 +00:00
test_read_format_iso_gz.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_isorr_bz2.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_read_format_pax_bz2.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_tar.c Extend the basic tar reading test to exercise most types of 2007-07-14 05:35:17 +00:00
test_read_format_tbz.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_tgz.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_tz.c libarchive 2.0 2007-03-03 07:37:37 +00:00
test_read_format_zip.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_read_large.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_read_pax_truncated.c New test suite test_read_pax_truncated probes libarchive 2007-07-13 15:14:35 +00:00
test_read_position.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_read_truncated.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_tar_filenames.c Report each failed test once, but keep a count and report that count 2007-07-14 17:52:01 +00:00
test_write_compress_program.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_write_disk.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_write_disk_perms.c Make suid/sgid restore be "opportunistic" if 2007-08-12 17:35:05 +00:00
test_write_disk_secure.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_write_format_ar.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_write_format_cpio.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_write_format_cpio_empty.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_write_format_shar_empty.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_write_format_tar.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00
test_write_format_tar_empty.c Make test suite work with libarchive 1.3.1: Take advantage of 2007-07-06 15:43:11 +00:00
test_write_open_memory.c libarchive 2.2.3 2007-05-29 01:00:21 +00:00

$FreeBSD$

This is the test harness for libarchive.

It compiles into a single program "libarchive_test" that is intended
to exercise as much of the library as possible.  It is, of course,
very much a work in progress.

Each test is a function named test_foo in a file named test_foo.c.
Note that the file name is the same as the function name.
Each file must start with this line:

  #include "test.h"

The test function must be declared with a line of this form

  DEFINE_TEST(test_foo)

Nothing else should appear on that line.

When you add a test, please update the Makefile to add your
file to the list of tests.  The Makefile and main.c use various
macro trickery to automatically collect a list of test functions
to be invoked.

Each test function can rely on the following:

  * The current directory will be a freshly-created empty directory
    suitable for that test.  (The top-level main() creates a
    directory for each separate test and chdir()s to that directory
    before running the test.)

  * The test function should use assert(), assertA() and similar macros
    defined in test.h.  If you need to add new macros of this form, feel
    free to do so.

  * You are encouraged to document each assertion with a failure() call
    just before the assert.  The failure() function is a printf-like
    function whose text is displayed only if the assertion fails.  It
    can be used to display additional information relevant to the failure:

       failure("The data read from file %s did not match the data written to that file.", filename);
       assert(strcmp(buff1, buff2) == 0);

  * Tests are encouraged to be economical with their memory and disk usage,
    though this is not essential.

  * Disable tests on specific platforms as necessary.  Please don't
    use config.h to adjust feature requirements, as I want the tests
    to also serve as a check on the configure process.  The following
    form is appropriate:

#if !defined(__PLATFORM) && !defined(__Platform2__)
    assert(xxxx)
#endif