12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- Unit tests
- ==========
- The goal is to add tests for *ALL* functions in libcurl. If functions are too
- big and complicated, we should split them into smaller and testable ones.
- Build Unit Tests
- ================
- './configure --enable-debug' is required for the unit tests to build. To
- enable unit tests, there will be a separate static libcurl built that will be
- used exclusively for linking unit test programs. Just build everything as
- normal, and then you can run the unit test cases as well.
- Run Unit Tests
- ==============
- Unit tests are run as part of the regular test suite. If you have built
- everything to run unit tests, to can do 'make test' at the root level. Or you
- can 'cd tests' and 'make' and then invoke individual unit tests with
- ./runtests.pl NNNN where NNNN is the specific test number.
- Debug Unit Tests
- ================
- If a specific test fails you will get told. The test case then has output left
- in the log/ subdirectory, but most importantly you can re-run the test again
- using gdb by doing ./runtests.pl -g NNNN. That is, add a -g to make it start
- up gdb and run the same case using that.
- Write Unit Tests
- ================
- We put tests that focus on an area or a specific function into a single C
- source file. The source file should be named 'unitNNNN.c' where NNNN is a
- number that starts with 1300 and you can pick the next free number.
- You also need a separate file called tests/data/testNNNN (using the same
- number) that describes your test case. See the test1300 file for inspiration
- and the tests/FILEFORMAT documentation.
- For the actual C file, here's a very simple example:
- ----------------------- start -------------------------------
- #include "curlcheck.h"
- #include "a libcurl header.h" /* from the lib dir */
- static void unit_setup( void )
- {
- /* whatever you want done first */
- }
- static void unit_stop( void )
- {
- /* done before shutting down and exiting */
- }
- UNITTEST_START
- /* here you start doing things and checking that the results are good */
- fail_unless( size == 0 , "initial size should be zero" );
- fail_if( head == NULL , "head should not be initiated to NULL" );
- /* you end the test code like this: */
- UNITTEST_STOP
- ----------------------- end -------------------------------
|