Annotation of embedaddon/curl/tests/unit/README, revision 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>