65 lines
2.3 KiB
Text
65 lines
2.3 KiB
Text
|
Notes on tests
|
||
|
============================
|
||
|
The semanage_access_check test in the semanage_store suite simulates a
|
||
|
read-only filesystem by using DAC permissions. Consequently, these tests
|
||
|
will fail if run as root, as root can override DAC permissions.
|
||
|
|
||
|
|
||
|
How to add and use unit tests
|
||
|
=============================
|
||
|
|
||
|
We are using the CUnit unit testing framework. This framework--and the
|
||
|
official documentation of the framework--may be found here:
|
||
|
|
||
|
http://cunit.sourceforge.net/
|
||
|
|
||
|
If you have not yet installed CUnit, first do that. (There is an RPM,
|
||
|
or you can compile from source.) Once installed, follow these steps to
|
||
|
add unit tests for your code:
|
||
|
|
||
|
1. Create a .h and .c file corresponding to the .c file you want to test.
|
||
|
For example, test_semanage_store.c provides tests of the functions in
|
||
|
semanage_store.c. Your new .h/.c files represent a suite of related
|
||
|
tests.
|
||
|
|
||
|
2. Write or add new tests to a suite. Tests are simply functions that
|
||
|
take the form:
|
||
|
|
||
|
void test_my_function(void)
|
||
|
|
||
|
These tests are where you will make calls to the CUnit assertions.
|
||
|
|
||
|
If you are making a new test suite, also add the suite init/cleanup
|
||
|
functions. These take the form:
|
||
|
|
||
|
int <suite_name>_test_init(void)
|
||
|
int <suite_name>_cleanup(void)
|
||
|
|
||
|
These functions will be called before and after the test functions
|
||
|
in your suite, respectively. They return 0 on success, 1 on failure.
|
||
|
|
||
|
3. Update libsemanage-tests.c to add your new suite and/or your new tests
|
||
|
using the DECLARE_SUITE macro in do_tests().
|
||
|
|
||
|
4. Update the Makefile:
|
||
|
+ Make sure that the TESTSRC variable is set to the location
|
||
|
of the libsemanage source code you want to test.
|
||
|
|
||
|
5. Compile the libsemanage source code you will be testing, to ensure
|
||
|
the object files are available and up to date.
|
||
|
|
||
|
6. Run your tests. Rejoice or despair, as appropriate.
|
||
|
|
||
|
|
||
|
A note on the the utilities.c: Add functions that can be commonly used
|
||
|
here. For example, it is handy to have a dummy message callback
|
||
|
function to silence error messages produced by libsemanage and keep
|
||
|
your output pretty. To do this, include utilities.h and specify the
|
||
|
callback like so:
|
||
|
|
||
|
semanage_handle_t *sh;
|
||
|
sh = semanage_handle_create();
|
||
|
sh->msg_callback = test_msg_handler;
|
||
|
|
||
|
Feel free to add other such functions here as well.
|