diff --git a/meson.build b/meson.build index 363fcd41..ce0c4fc2 100644 --- a/meson.build +++ b/meson.build @@ -897,10 +897,22 @@ if get_option('tests') install_dir : dir_man1, ) - test('libinput-test-suite-runner', - libinput_test_runner, - suite : ['all', 'valgrind', 'root', 'hardware'], - timeout : 1200) + # Update this list and the one in litest.c when new group names are + # required + groups = [ + 'config', 'context', 'device', 'events', 'gestures', 'keyboard', 'lid', + 'log', 'misc', 'pad', 'path', 'pointer', 'quirks', 'switch', 'tablet', + 'tablet-mode', 'tap', 'timer', 'totem', 'touch', 'touchpad', 'trackball', + 'trackpoint', 'udev', + ] + foreach group : groups + test('libinput-test-suite-@0@'.format(group), + libinput_test_runner, + suite : ['all', 'valgrind', 'root', 'hardware'], + args : ['--filter-group=@0@:*'.format(group)], + is_parallel : false, + timeout : 1200) + endforeach test('libinput-test-deviceless', libinput_test_runner, diff --git a/test/litest.c b/test/litest.c index 6521cbf3..b31a3f48 100644 --- a/test/litest.c +++ b/test/litest.c @@ -381,6 +381,25 @@ static struct suite * get_suite(const char *name) { struct suite *s; + /* this is the list meson calls, ensure we don't miss out on tests */ + const char * allowed_suites[] = { + "config:", "context:", "device:", "events:", "gestures:", + "keyboard:", "lid:", "log:", "misc:", "pad:", "path:", + "pointer:", "quirks:", "switch:", "tablet:", "tablet-mode:", + "tap:", "timer:", "totem:", "touch:", "touchpad:", + "trackball:", "trackpoint:", "udev:", + }; + const char **allowed; + bool found = false; + + ARRAY_FOR_EACH(allowed_suites, allowed) { + if (strneq(name, *allowed, strlen(*allowed))) { + found = true; + break; + } + } + if (!found) + litest_abort_msg("Suite name '%s' is not allowed\n", name); list_for_each(s, &all_tests, node) { if (streq(s->name, name))