diff --git a/test/test-common.h b/test/test-common.h index 47ad476..2f258f3 100644 --- a/test/test-common.h +++ b/test/test-common.h @@ -28,6 +28,20 @@ #ifndef _TEST_COMMON_H_ #define _TEST_COMMON_H_ +struct libevdev_test { + const char *name; + Suite* (*setup)(void); +} __attribute__((aligned(16))); + +#define TEST_SUITE(name) \ + static Suite* (name##_setup)(void); \ + static const struct libevdev_test _test \ + __attribute__((used)) \ + __attribute__((section ("test_section"))) = { \ + #name, name##_setup \ + }; \ + static Suite* (name##_setup)(void) + #define TEST_DEVICE_NAME "libevdev test device" #include "test-common-uinput.h" diff --git a/test/test-event-codes.c b/test/test-event-codes.c index ced5dba..8e85df8 100644 --- a/test/test-event-codes.c +++ b/test/test-event-codes.c @@ -131,8 +131,7 @@ START_TEST(test_properties_invalid) } END_TEST -Suite * -event_code_suite(void) +TEST_SUITE(event_code_suite) { Suite *s = suite_create("Event codes"); diff --git a/test/test-event-names.c b/test/test-event-names.c index 4807dec..9ed23d0 100644 --- a/test/test-event-names.c +++ b/test/test-event-names.c @@ -271,8 +271,7 @@ START_TEST(test_event_code) } END_TEST -Suite * -event_name_suite(void) +TEST_SUITE(event_name_suite) { Suite *s = suite_create("Event names"); diff --git a/test/test-int-queue.c b/test/test-int-queue.c index c23f96f..b98425a 100644 --- a/test/test-int-queue.c +++ b/test/test-int-queue.c @@ -326,8 +326,7 @@ START_TEST(test_queue_set_num_elements) } END_TEST -Suite * -queue_suite(void) +TEST_SUITE(queue_suite) { Suite *s = suite_create("Event queue"); diff --git a/test/test-libevdev-events.c b/test/test-libevdev-events.c index dd2face..6055d59 100644 --- a/test/test-libevdev-events.c +++ b/test/test-libevdev-events.c @@ -2140,8 +2140,7 @@ START_TEST(test_event_mt_value_setters_current_slot) } END_TEST -Suite * -libevdev_events(void) +TEST_SUITE(libevdev_events) { Suite *s = suite_create("libevdev event tests"); diff --git a/test/test-libevdev-has-event.c b/test/test-libevdev-has-event.c index 7703206..07646de 100644 --- a/test/test-libevdev-has-event.c +++ b/test/test-libevdev-has-event.c @@ -1142,8 +1142,7 @@ START_TEST(test_led_same) } END_TEST -Suite * -libevdev_has_event_test(void) +TEST_SUITE(has_events) { Suite *s = suite_create("libevdev_has_event tests"); diff --git a/test/test-libevdev-init.c b/test/test-libevdev-init.c index 9b49ca2..c5d7d8c 100644 --- a/test/test-libevdev-init.c +++ b/test/test-libevdev-init.c @@ -683,8 +683,7 @@ START_TEST(test_clock_id_events) } END_TEST -Suite * -libevdev_init_test(void) +TEST_SUITE(libevdev_init_test) { Suite *s = suite_create("libevdev init tests"); diff --git a/test/test-main.c b/test/test-main.c index 9a2bf94..b1c82cc 100644 --- a/test/test-main.c +++ b/test/test-main.c @@ -32,14 +32,6 @@ #include "test-common.h" -extern Suite *event_name_suite(void); -extern Suite *event_code_suite(void); -extern Suite *libevdev_init_test(void); -extern Suite *queue_suite(void); -extern Suite *libevdev_has_event_test(void); -extern Suite *libevdev_events(void); -extern Suite *uinput_suite(void); - static int is_debugger_attached(void) { @@ -68,8 +60,11 @@ is_debugger_attached(void) return rc; } +extern const struct libevdev_test __start_test_section, __stop_test_section; + int main(void) { + const struct libevdev_test *t; const struct rlimit corelimit = {0, 0}; int failed; @@ -86,14 +81,11 @@ int main(void) libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - Suite *s = libevdev_has_event_test(); - SRunner *sr = srunner_create(s); - srunner_add_suite(sr, libevdev_events()); - srunner_add_suite(sr, libevdev_init_test()); - srunner_add_suite(sr, queue_suite()); - srunner_add_suite(sr, event_name_suite()); - srunner_add_suite(sr, event_code_suite()); - srunner_add_suite(sr, uinput_suite()); + SRunner *sr = srunner_create(NULL); + for (t = &__start_test_section; t < &__stop_test_section; t++) { + srunner_add_suite(sr, t->setup()); + } + srunner_run_all(sr, CK_NORMAL); failed = srunner_ntests_failed(sr); diff --git a/test/test-uinput.c b/test/test-uinput.c index 99738e3..e538050 100644 --- a/test/test-uinput.c +++ b/test/test-uinput.c @@ -368,8 +368,7 @@ START_TEST(test_uinput_properties) } END_TEST -Suite * -uinput_suite(void) +TEST_SUITE(uinput_suite) { Suite *s = suite_create("libevdev uinput device tests");