Files
libucore/test/test_runner.c
T
2014-07-11 16:27:36 +02:00

121 lines
2.9 KiB
C

#include <stdlib.h>
#include <getopt.h>
#include <stdio.h>
#include <check.h>
#include <getopt.h>
typedef Suite *(*suite_func)(void);
extern Suite *bitvec_suite(void);
extern Suite *bcd_suite(void);
extern Suite *hex_suite(void);
extern Suite *container_of_suite(void);
extern Suite *read_file_suite(void);
extern Suite *pack_suite(void);
extern Suite *logging_suite(void);
extern Suite *threadqueue_suite(void);
extern Suite *buffer_suite(void);
extern Suite *clock_suite(void);
extern Suite *seq_suite(void);
extern Suite *sat_math_suite(void);
extern Suite *timers_suite(void);
extern Suite *mbuf_suite(void);
extern Suite *human_bytesz_suite(void);
extern Suite *dbuf_suite(void);
extern Suite *sprintb_suite(void);
extern Suite *strv_suite(void);
extern Suite *ratelimit_suite(void);
extern Suite *htable_suite(void);
extern Suite *heapsort_suite(void);
extern Suite *dstr_suite(void);
extern Suite *val_str_suite(void);
extern Suite *ticket_lock_suite(void);
static suite_func suites[] = {
bitvec_suite,
bcd_suite,
hex_suite,
container_of_suite,
read_file_suite,
pack_suite,
logging_suite,
buffer_suite,
seq_suite,
sat_math_suite,
timers_suite,
mbuf_suite,
human_bytesz_suite,
dbuf_suite,
sprintb_suite,
strv_suite,
ratelimit_suite,
htable_suite,
clock_suite,
threadqueue_suite,
heapsort_suite,
dstr_suite,
val_str_suite,
ticket_lock_suite
};
int
main (int argc, char *argv[])
{
int xml_output = 0;
int c;
const char *test_case = NULL;
while ((c = getopt(argc, argv, "xk:")) != -1) {
switch (c) {
case 'x':
xml_output = 1;
break;
case 'k':
test_case = optarg;
break;
default:
printf("Ignoring unknown option %c\n", c);
break;
}
}
int number_run;
int number_failed = 0;
size_t i;
SRunner *sr = srunner_create (NULL);
if (xml_output)
srunner_set_xml(sr, "result.xml");
srunner_set_fork_status(sr, CK_FORK_GETENV);
for(i = 0; i < sizeof suites/sizeof suites[0]; i++) {
srunner_add_suite(sr, suites[i]());
}
if (test_case == NULL) {
srunner_run_all (sr, CK_VERBOSE);
} else {
#if CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION == 9 && CHECK_MICRO_VERSION <= 8
printf("Sorry, this libcheck version does not support running individual test cases");
return 3;
#else
printf("Running %s only\n", test_case);
srunner_run(sr, NULL, test_case, CK_VERBOSE);
#endif
}
number_run = srunner_ntests_run(sr);
number_failed = srunner_ntests_failed (sr);
srunner_free (sr);
if (!number_run)
puts("ERROR: no tests were run");
if (number_failed)
printf("ERROR: %d tests failed\n", number_failed);
return (number_failed != 0) ;
}