1 #include "lwip_check.h"
2 
3 #include "ip4/test_ip4.h"
4 #include "udp/test_udp.h"
5 #include "tcp/test_tcp.h"
6 #include "tcp/test_tcp_oos.h"
7 #include "core/test_mem.h"
8 #include "core/test_pbuf.h"
9 #include "etharp/test_etharp.h"
10 #include "dhcp/test_dhcp.h"
11 #include "mdns/test_mdns.h"
12 
13 #include "lwip/init.h"
14 
create_suite(const char * name,testfunc * tests,size_t num_tests,SFun setup,SFun teardown)15 Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
16 {
17   size_t i;
18   Suite *s = suite_create(name);
19 
20   for(i = 0; i < num_tests; i++) {
21     TCase *tc_core = tcase_create(name);
22     if ((setup != NULL) || (teardown != NULL)) {
23       tcase_add_checked_fixture(tc_core, setup, teardown);
24     }
25     tcase_add_named_test(tc_core, tests[i]);
26     suite_add_tcase(s, tc_core);
27   }
28   return s;
29 }
30 
31 #ifdef LWIP_UNITTESTS_LIB
lwip_unittests_run(void)32 int lwip_unittests_run(void)
33 #else
34 int main(void)
35 #endif
36 {
37   int number_failed;
38   SRunner *sr;
39   size_t i;
40   suite_getter_fn* suites[] = {
41     ip4_suite,
42     udp_suite,
43     tcp_suite,
44     tcp_oos_suite,
45     mem_suite,
46     pbuf_suite,
47     etharp_suite,
48     dhcp_suite,
49     mdns_suite
50   };
51   size_t num = sizeof(suites)/sizeof(void*);
52   LWIP_ASSERT("No suites defined", num > 0);
53 
54   lwip_init();
55 
56   sr = srunner_create((suites[0])());
57   for(i = 1; i < num; i++) {
58     srunner_add_suite(sr, ((suite_getter_fn*)suites[i])());
59   }
60 
61 #ifdef LWIP_UNITTESTS_NOFORK
62   srunner_set_fork_status(sr, CK_NOFORK);
63 #endif
64 #ifdef LWIP_UNITTESTS_FORK
65   srunner_set_fork_status(sr, CK_FORK);
66 #endif
67 
68   srunner_run_all(sr, CK_NORMAL);
69   number_failed = srunner_ntests_failed(sr);
70   srunner_free(sr);
71   return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
72 }
73