File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / tests / unit / README
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:16 2020 UTC (5 years ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>