Annotation of embedaddon/curl/tests/unit/README, revision 1.1.1.1

1.1       misho       1: Unit tests
                      2: ==========
                      3: 
                      4: The goal is to add tests for *ALL* functions in libcurl. If functions are too
                      5: big and complicated, we should split them into smaller and testable ones.
                      6: 
                      7: Build Unit Tests
                      8: ================
                      9: 
                     10: './configure --enable-debug' is required for the unit tests to build. To
                     11: enable unit tests, there will be a separate static libcurl built that will be
                     12: used exclusively for linking unit test programs. Just build everything as
                     13: normal, and then you can run the unit test cases as well.
                     14: 
                     15: Run Unit Tests
                     16: ==============
                     17: 
                     18: Unit tests are run as part of the regular test suite. If you have built
                     19: everything to run unit tests, to can do 'make test' at the root level. Or you
                     20: can 'cd tests' and 'make' and then invoke individual unit tests with
                     21: ./runtests.pl NNNN where NNNN is the specific test number.
                     22: 
                     23: Debug Unit Tests
                     24: ================
                     25: 
                     26: If a specific test fails you will get told. The test case then has output left
                     27: in the log/ subdirectory, but most importantly you can re-run the test again
                     28: using gdb by doing ./runtests.pl -g NNNN. That is, add a -g to make it start
                     29: up gdb and run the same case using that.
                     30: 
                     31: Write Unit Tests
                     32: ================
                     33: 
                     34: We put tests that focus on an area or a specific function into a single C
                     35: source file. The source file should be named 'unitNNNN.c' where NNNN is a
                     36: number that starts with 1300 and you can pick the next free number.
                     37: 
                     38: Add your test to tests/unit/Makefile.inc (if it is a unit test).
                     39: Add your test data to tests/data/Makefile.inc
                     40: 
                     41: You also need a separate file called tests/data/testNNNN (using the same
                     42: number) that describes your test case. See the test1300 file for inspiration
                     43: and the tests/FILEFORMAT documentation.
                     44: 
                     45: For the actual C file, here's a very simple example:
                     46: 
                     47: ----------------------- start -------------------------------
                     48: #include "curlcheck.h"
                     49: 
                     50: #include "a libcurl header.h" /* from the lib dir */
                     51: 
                     52: static CURLcode unit_setup( void )
                     53: {
                     54:   /* whatever you want done first */
                     55:   return CURLE_OK;
                     56: }
                     57: 
                     58: static void unit_stop( void )
                     59: {
                     60:   /* done before shutting down and exiting */
                     61: }
                     62: 
                     63: UNITTEST_START
                     64: 
                     65:   /* here you start doing things and checking that the results are good */
                     66: 
                     67:   fail_unless( size == 0 , "initial size should be zero" );
                     68:   fail_if( head == NULL , "head should not be initiated to NULL" );
                     69: 
                     70:   /* you end the test code like this: */
                     71: 
                     72: UNITTEST_STOP
                     73: 
                     74: ----------------------- end -------------------------------

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>