mirror of
https://github.com/OpenVPN/openvpn.git
synced 2026-04-27 17:19:05 -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>
46 lines
957 B
C
46 lines
957 B
C
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
#include <setjmp.h>
|
|
#include <cmocka.h>
|
|
|
|
static int setup(void **state) {
|
|
int *answer = malloc(sizeof(int));
|
|
|
|
*answer=42;
|
|
*state=answer;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int teardown(void **state) {
|
|
free(*state);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static void null_test_success(void **state) {
|
|
(void) state;
|
|
}
|
|
|
|
static void int_test_success(void **state) {
|
|
int *answer = *state;
|
|
assert_int_equal(*answer, 42);
|
|
}
|
|
|
|
static void failing_test(void **state) {
|
|
// This tests fails to test that make check fails
|
|
assert_int_equal(0, 42);
|
|
}
|
|
|
|
int main(void) {
|
|
const struct CMUnitTest tests[] = {
|
|
cmocka_unit_test(null_test_success),
|
|
cmocka_unit_test_setup_teardown(int_test_success, setup, teardown),
|
|
// cmocka_unit_test(failing_test),
|
|
};
|
|
|
|
return cmocka_run_group_tests_name("success_test", tests, NULL, NULL);
|
|
}
|