From 7b9affcf4b42a203d64a42eeb63e8aaab49a317f Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 27 Jun 2019 08:31:01 +1000 Subject: [PATCH] meson: run the test suite per group We can't run this in parallel so it doesn't gain us any speed advantage. If anything, it'll be slower because it's more setup time in between. But: meson doesn't display the result until the test suite finished, so having this broken up into smaller chunks means we're more likely to see a general failure early. And the failure should be quicker to reproduce as well. Signed-off-by: Peter Hutterer --- meson.build | 20 ++++++++++++++++---- test/litest.c | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 363fcd4..ce0c4fc 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 6521cbf..b31a3f4 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)) -- 2.7.4