First layout to add c unit testing support to fwknop.
This commit is contained in:
parent
00a057a09d
commit
306dd0f685
57
client/config_init.c
Normal file → Executable file
57
client/config_init.c
Normal file → Executable file
@ -52,6 +52,11 @@
|
|||||||
#define BITMASK_ARRAY_SIZE 2 /*!< Number of 32bits integer used to handle bitmask in the fko_var_bitmask_t structure */
|
#define BITMASK_ARRAY_SIZE 2 /*!< Number of 32bits integer used to handle bitmask in the fko_var_bitmask_t structure */
|
||||||
#define LF_CHAR 0x0A /*!< Hexadecimal value associated to the LF char */
|
#define LF_CHAR 0x0A /*!< Hexadecimal value associated to the LF char */
|
||||||
|
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
#define TEST_SUITE_DESCRIPTION "Config init module"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure to handle long bitmask.
|
* Structure to handle long bitmask.
|
||||||
*
|
*
|
||||||
@ -2539,3 +2544,55 @@ usage(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
|
||||||
|
static int ut_init_test_suite(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ut_clean_test_suite(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_UTEST(test1, "Description de ut1 dans config_init.c")
|
||||||
|
{
|
||||||
|
CU_ASSERT(var_is_critical(0) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_UTEST(test2, "Description de ut2 dans config_init.c")
|
||||||
|
{
|
||||||
|
CU_ASSERT(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_UTEST(test3, "Description de ut3 dans config_init.c")
|
||||||
|
{ CU_ASSERT(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO add a generic function to go through a tab which contains all utests */
|
||||||
|
int register_ts_config_init(void)
|
||||||
|
{
|
||||||
|
CU_pSuite pSuite = NULL;
|
||||||
|
|
||||||
|
/* add a suite to the registry */
|
||||||
|
pSuite = CU_add_suite(TEST_SUITE_DESCRIPTION, ut_init_test_suite, ut_clean_test_suite);
|
||||||
|
if (NULL == pSuite) {
|
||||||
|
CU_cleanup_registry();
|
||||||
|
return CU_get_error();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add the tests to the suite */
|
||||||
|
if ((NULL == CU_add_test(pSuite, UTEST_DESCR(test1), UTEST_FCT(test1))) ||
|
||||||
|
(NULL == CU_add_test(pSuite, UTEST_DESCR(test2), UTEST_FCT(test2))) ||
|
||||||
|
(NULL == CU_add_test(pSuite, UTEST_DESCR(test3), UTEST_FCT(test3))))
|
||||||
|
{
|
||||||
|
CU_cleanup_registry();
|
||||||
|
return CU_get_error();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_C_UNIT_TESTS */
|
||||||
|
|
||||||
|
|||||||
4
client/config_init.h
Normal file → Executable file
4
client/config_init.h
Normal file → Executable file
@ -43,6 +43,10 @@
|
|||||||
void config_init(fko_cli_options_t *options, int argc, char **argv);
|
void config_init(fko_cli_options_t *options, int argc, char **argv);
|
||||||
void usage(void);
|
void usage(void);
|
||||||
|
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
int register_ts_config_init(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_INIT_H */
|
#endif /* CONFIG_INIT_H */
|
||||||
|
|
||||||
/***EOF***/
|
/***EOF***/
|
||||||
|
|||||||
@ -52,6 +52,10 @@
|
|||||||
#define ARRAY_FIRST_ELT_ADR(t) &((t)[0]) /*!< Macro to get the first element of an array */
|
#define ARRAY_FIRST_ELT_ADR(t) &((t)[0]) /*!< Macro to get the first element of an array */
|
||||||
#define ARRAY_LAST_ELT_ADR(t) &((t)[sizeof(t)-1]) /*!< Macro to get the last element of an array */
|
#define ARRAY_LAST_ELT_ADR(t) &((t)[sizeof(t)-1]) /*!< Macro to get the last element of an array */
|
||||||
|
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
#define TEST_SUITE_DESCRIPTION "Get password module"
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read a password from a stream object
|
* @brief Read a password from a stream object
|
||||||
*
|
*
|
||||||
@ -293,4 +297,52 @@ get_key_file(char *key, int *key_len, const char *key_file,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
|
||||||
|
static int ut_init_test_suite(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ut_clean_test_suite(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_UTEST(test1, "Description de ut1 dans getpassword.c")
|
||||||
|
{
|
||||||
|
CU_ASSERT(1 == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_UTEST(test2, "Description de ut2 dans getpassword.c")
|
||||||
|
{
|
||||||
|
CU_ASSERT(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO add a generic function to go through a tab which contains all utests */
|
||||||
|
int register_ts_getpassword(void)
|
||||||
|
{
|
||||||
|
CU_pSuite pSuite = NULL;
|
||||||
|
|
||||||
|
/* add a suite to the registry */
|
||||||
|
pSuite = CU_add_suite(TEST_SUITE_DESCRIPTION, ut_init_test_suite, ut_clean_test_suite);
|
||||||
|
if (NULL == pSuite) {
|
||||||
|
CU_cleanup_registry();
|
||||||
|
return CU_get_error();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add the tests to the suite */
|
||||||
|
if ((NULL == CU_add_test(pSuite, UTEST_DESCR(test1), UTEST_FCT(test1))) ||
|
||||||
|
(NULL == CU_add_test(pSuite, UTEST_DESCR(test2), UTEST_FCT(test2))))
|
||||||
|
{
|
||||||
|
CU_cleanup_registry();
|
||||||
|
return CU_get_error();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_C_UNIT_TESTS */
|
||||||
|
|
||||||
/***EOF***/
|
/***EOF***/
|
||||||
|
|||||||
@ -40,4 +40,8 @@ char* getpasswd(const char *prompt, int fd);
|
|||||||
int get_key_file(char *key, int *key_len, const char *key_file,
|
int get_key_file(char *key, int *key_len, const char *key_file,
|
||||||
fko_ctx_t ctx, const fko_cli_options_t *options);
|
fko_ctx_t ctx, const fko_cli_options_t *options);
|
||||||
|
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
int register_ts_getpassword(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* GETPASSWD_H */
|
#endif /* GETPASSWD_H */
|
||||||
|
|||||||
@ -42,6 +42,11 @@
|
|||||||
#include <fiu-control.h>
|
#include <fiu-control.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Include cunit header if c unit testing support is enabled. */
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
#include "CUnit/Basic.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#if HAVE_SYS_TYPES_H
|
#if HAVE_SYS_TYPES_H
|
||||||
@ -179,6 +184,16 @@ enum {
|
|||||||
#define strnlen(s, l) (strlen(s) < l ? strlen(s) : l)
|
#define strnlen(s, l) (strlen(s) < l ? strlen(s) : l)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Add some constant helpers for c unit support */
|
||||||
|
#ifdef HAVE_C_UNIT_TESTS
|
||||||
|
#define UTEST_DESCR(name) descr_##name
|
||||||
|
#define UTEST_FCT(name) ut_##name
|
||||||
|
|
||||||
|
#define DECLARE_UTEST(name, description) static const char descr_##name[] = description; \
|
||||||
|
static void ut_##name(void)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _COMMON_H */
|
#endif /* _COMMON_H */
|
||||||
|
|
||||||
/***EOF***/
|
/***EOF***/
|
||||||
|
|||||||
16
configure.ac
Normal file → Executable file
16
configure.ac
Normal file → Executable file
@ -152,6 +152,21 @@ if test "x$want_libfiu_support" = "xyes"; then
|
|||||||
FKO_CHECK_COMPILER_ARG_LDFLAGS_ONLY([-lfiu])
|
FKO_CHECK_COMPILER_ARG_LDFLAGS_ONLY([-lfiu])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl Decide whether or not to enable C unit testing
|
||||||
|
dnl
|
||||||
|
want_c_unit_tests=no
|
||||||
|
AC_ARG_ENABLE([c-unit-tests],
|
||||||
|
[AS_HELP_STRING([--enable-c-unit-tests],
|
||||||
|
[Enable C unit testing with libcunit support @<:@default is to disable@:>@])],
|
||||||
|
[want_c_unit_tests=$enableval],
|
||||||
|
[])
|
||||||
|
|
||||||
|
if test "x$want_c_unit_tests" = "xyes"; then
|
||||||
|
AC_DEFINE([HAVE_C_UNIT_TESTS], [1], [Define for C unit testing support])
|
||||||
|
FKO_CHECK_COMPILER_ARG([-DHAVE_C_UNIT_TESTS])
|
||||||
|
FKO_CHECK_COMPILER_ARG_LDFLAGS_ONLY([-lcunit])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Decide whether or not to compile in certain features that enable fuzzing
|
dnl Decide whether or not to compile in certain features that enable fuzzing
|
||||||
dnl of fwknop code - this is for testing purposes only.
|
dnl of fwknop code - this is for testing purposes only.
|
||||||
dnl
|
dnl
|
||||||
@ -622,6 +637,7 @@ AC_CONFIG_FILES([Makefile
|
|||||||
client/Makefile
|
client/Makefile
|
||||||
server/Makefile
|
server/Makefile
|
||||||
common/Makefile
|
common/Makefile
|
||||||
|
test/c-unit-tests/Makefile
|
||||||
doc/Makefile])
|
doc/Makefile])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|||||||
16
test/c-unit-tests/Makefile.am
Executable file
16
test/c-unit-tests/Makefile.am
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
bin_PROGRAMS = fko_utests
|
||||||
|
|
||||||
|
fko_utests_SOURCES = fko_utests.c \
|
||||||
|
$(top_srcdir)/client/config_init.c config_init.h \
|
||||||
|
fwknop_common.h \
|
||||||
|
$(top_srcdir)/client/spa_comm.c spa_comm.h \
|
||||||
|
$(top_srcdir)/client/utils.c utils.h \
|
||||||
|
$(top_srcdir)/client/http_resolve_host.c \
|
||||||
|
$(top_srcdir)/client/getpasswd.c getpasswd.h cmd_opts.h \
|
||||||
|
$(top_srcdir)/client/log_msg.c log_msg.h
|
||||||
|
|
||||||
|
fko_utests_CPPFLAGS = -I $(top_srcdir)/lib -I $(top_srcdir)/common -I $(top_srcdir)/client
|
||||||
|
|
||||||
|
fko_utests_LDADD = $(top_builddir)/lib/libfko.la $(top_builddir)/common/libfko_util.a
|
||||||
|
|
||||||
|
fko_utests_LDFLAGS = -lcunit
|
||||||
34
test/c-unit-tests/fko_utests.c
Executable file
34
test/c-unit-tests/fko_utests.c
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#include "CUnit/Basic.h"
|
||||||
|
|
||||||
|
#include "fwknop.h"
|
||||||
|
#include "config_init.h"
|
||||||
|
#include "getpasswd.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register test suites from FKO files
|
||||||
|
*/
|
||||||
|
static void register_test_suites(void)
|
||||||
|
{
|
||||||
|
register_ts_config_init();
|
||||||
|
register_ts_getpassword();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The main() function for setting up and running the tests.
|
||||||
|
* Returns a CUE_SUCCESS on successful running, another
|
||||||
|
* CUnit error code on failure.
|
||||||
|
*/
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
/* initialize the CUnit test registry */
|
||||||
|
if (CUE_SUCCESS != CU_initialize_registry())
|
||||||
|
return CU_get_error();
|
||||||
|
|
||||||
|
/* Register test suites from fko files */
|
||||||
|
register_test_suites();
|
||||||
|
|
||||||
|
/* Run all tests using the CUnit Basic interface */
|
||||||
|
CU_basic_set_mode(CU_BRM_VERBOSE);
|
||||||
|
CU_basic_run_tests();
|
||||||
|
CU_cleanup_registry();
|
||||||
|
return CU_get_error();
|
||||||
|
}
|
||||||
6
test/c-unit-tests/fko_utests.h
Executable file
6
test/c-unit-tests/fko_utests.h
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef FKO_UTESTS_H
|
||||||
|
#define FKO_UTESTS_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* FKO_UTESTS_H */
|
||||||
Loading…
x
Reference in New Issue
Block a user