64 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| $FreeBSD: src/lib/libarchive/test/README,v 1.3 2008/01/01 22:28:04 kientzle Exp $
 | |
| 
 | |
| 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.  The current macro set includes assertEqualInt() and
 | |
|     assertEqualString() that print out additional detail about their
 | |
|     arguments if the assertion does fail.  'A' versions also accept
 | |
|     a struct archive * and display any error message from there on
 | |
|     failure.
 | |
| 
 | |
|   * 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.  The test is occasionally run under
 | |
|     a memory debugger to try to locate memory leaks in the library;
 | |
|     as a result, tests should be careful to release any memory they
 | |
|     allocate.
 | |
| 
 | |
|   * 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
 | |
| 
 |