mirror of
https://github.com/OpenVPN/openvpn.git
synced 2026-04-09 11:08:50 -04:00
cmocka [1,2] is a testing framework for C. Adding unit test capabilities to the openvpn repository will greatly ease the task of writing correct code. cmocka source code is added as git submodule in ./vendor. A submodule approach has been chosen over a classical library dependency because libcmocka is not available, or only available in very old versions (e.g. on Ubuntu). cmocka is build during 'make check' and installed in vendor/dist/. [1] https://cmocka.org/ [2] https://lwn.net/Articles/558106/ Signed-off-by: Jens Neuhalfen <jens@neuhalfen.name> Acked-by: Steffan Karger <steffan@karger.me> Message-Id: <20160525175756.56186-2-openvpn-devel@neuhalfen.name> URL: http://article.gmane.org/gmane.network.openvpn.devel/11725 Signed-off-by: David Sommerseth <dazo@privateinternetaccess.com>
1.9 KiB
1.9 KiB
Unit Tests
This directory contains unit tests for openvpn. New features/bugfixes should be written in a test friendly way and come with corresponding tests.
Run tests
Tests are run by make check. A failed tests stops test execution. To run all
tests regardless of errors call make -k check.
Add new tests to existing test suite
Test suites are organized in directories. example_test/ is an example for a test suite with two test executables. Feel free to use it as a template for new tests.
Test suites
Test suites live inside a subdirectory of $ROOT/tests/unit_tests, e.g. $ROOT/tests/unit_tests/my_feature.
Test suites are configured by a Makefile.am. Tests are executed by testdrivers. One testsuite can contain more than one testdriver.
Hints
- Name suites & testdrivers in a way that the name of the driver says something about which component/feature is tested
- Name the testdriver executable
*_testdriver. This way it gets picked up by the default.gitignore- If this is not feasible: Add all output to a
.gitignore* Use descriptive test names:coffee_brewing__with_no_beans__failsvs.test34
- If this is not feasible: Add all output to a
- Testing a configurable feature? Wrap test execution with a conditional (see auth_pam for an example)
- Add multiple test-drivers when one testdriver looks crowded with tests
New Test Suites
- Organize tests in folders for features.
- Add the new test directory to
SUBDIRSinMakefile.am - Edit
configure.acand add the newMakefiletoAC_CONFIG_FILES - Run
./configure, and enable the feature you'd like to test - Make sure that
make checkruns your tests - Check: Would a stranger be able to easily find your tests by you looking at the test output?
- Run
./configure, and disable the feature you'd like to test - Make sure that
make checkdoes not run your tests