Skip to content

Commit

Permalink
test: remove the deviceless test runner, make it a commandline arg in…
Browse files Browse the repository at this point in the history
…stead

No need to rebuild everything with an ifdef, we can just use meson to pass an
argument to the test itself and filter based on that. This drops about 100
ninja targets.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
  • Loading branch information
whot committed Aug 13, 2018
1 parent 0d27a33 commit 335554a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 30 deletions.
10 changes: 3 additions & 7 deletions meson.build
Expand Up @@ -820,13 +820,9 @@ if get_option('tests')
libinput_test_runner,
timeout : 1200)

libinput_test_deviceless = executable('libinput-test-deviceless',
libinput_test_runner_sources,
include_directories : [includes_src, includes_include],
dependencies : deps_litest,
c_args : [ def_LT_VERSION, '-DDISABLE_DEVICE_TESTS=1' ],
install : false)
test('libinput-test-deviceless', libinput_test_deviceless)
test('libinput-test-deviceless',
libinput_test_runner,
args: ['--filter-deviceless'])

valgrind_env = environment()
valgrind_env.set('CK_FORK', 'no')
Expand Down
49 changes: 26 additions & 23 deletions test/litest.c
Expand Up @@ -76,6 +76,7 @@
static int jobs = 8;
static bool in_debugger = false;
static bool verbose = false;
static bool run_deviceless = false;
const char *filter_test = NULL;
const char *filter_device = NULL;
const char *filter_group = NULL;
Expand Down Expand Up @@ -887,15 +888,13 @@ litest_run_suite(struct list *tests, int which, int max, int error_fd)
TCase *tc;
char *sname, *tname;

#if DISABLE_DEVICE_TESTS
/* We run deviceless tests as part of the normal
* test suite runner, just in case. Filtering
* all the other ones out just for the case where
* we can't run the full runner.
*/
if (!t->deviceless)
if (run_deviceless && !t->deviceless)
continue;
#endif

count = (count + 1) % max;
if (max != 1 && (count % max) != which)
Expand Down Expand Up @@ -1030,13 +1029,15 @@ static inline int
inhibit(void)
{
int lock_fd = -1;
#if !DISABLE_DEVICE_TESTS
#if HAVE_LIBSYSTEMD
sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus_message *m = NULL;
sd_bus *bus = NULL;
int rc;

if (run_deviceless)
return -1;

rc = sd_bus_open_system(&bus);
if (rc != 0) {
fprintf(stderr, "Warning: inhibit failed: %s\n", strerror(-rc));
Expand Down Expand Up @@ -1072,7 +1073,6 @@ inhibit(void)
sd_bus_message_unref(m);
sd_bus_close(bus);
sd_bus_unref(bus);
#endif
#endif
return lock_fd;
}
Expand All @@ -1095,12 +1095,12 @@ litest_run(int argc, char **argv)
if (getenv("LITEST_VERBOSE"))
verbose = true;

#if DISABLE_DEVICE_TESTS
quirks_dir = safe_strdup(LIBINPUT_QUIRKS_SRCDIR);
#else
litest_init_udev_rules(&created_files_list);
quirks_dir = litest_install_quirks(&created_files_list);
#endif
if (run_deviceless) {
quirks_dir = safe_strdup(LIBINPUT_QUIRKS_SRCDIR);
} else {
litest_init_udev_rules(&created_files_list);
quirks_dir = litest_install_quirks(&created_files_list);
}
setenv("LIBINPUT_QUIRKS_DIR", quirks_dir, 1);
free(quirks_dir);

Expand Down Expand Up @@ -3873,6 +3873,7 @@ litest_parse_argv(int argc, char **argv)
OPT_FILTER_TEST,
OPT_FILTER_DEVICE,
OPT_FILTER_GROUP,
OPT_FILTER_DEVICELESS,
OPT_JOBS,
OPT_LIST,
OPT_VERBOSE,
Expand All @@ -3881,6 +3882,7 @@ litest_parse_argv(int argc, char **argv)
{ "filter-test", 1, 0, OPT_FILTER_TEST },
{ "filter-device", 1, 0, OPT_FILTER_DEVICE },
{ "filter-group", 1, 0, OPT_FILTER_GROUP },
{ "filter-deviceless", 0, 0, OPT_FILTER_DEVICELESS },
{ "jobs", 1, 0, OPT_JOBS },
{ "list", 0, 0, OPT_LIST },
{ "verbose", 0, 0, OPT_VERBOSE },
Expand Down Expand Up @@ -3929,6 +3931,9 @@ litest_parse_argv(int argc, char **argv)
case OPT_VERBOSE:
verbose = true;
break;
case OPT_FILTER_DEVICELESS:
run_deviceless = true;
break;
default:
fprintf(stderr, "usage: %s [--list]\n", argv[0]);
return LITEST_MODE_ERROR;
Expand Down Expand Up @@ -4023,11 +4028,6 @@ setup_tests(void)
static int
check_device_access(void)
{
#if !DISABLE_DEVICE_TESTS
/* You don't get to skip the deviceless tests */
if (getenv("SKIP_LIBINPUT_TEST_SUITE_RUNNER"))
return 77;

if (getuid() != 0) {
fprintf(stderr,
"%s must be run as root.\n",
Expand All @@ -4041,7 +4041,6 @@ check_device_access(void)
"uinput device is missing, skipping tests.\n");
return 77;
}
#endif /* DISABLE_DEVICE_TESTS */

return 0;
}
Expand All @@ -4051,12 +4050,12 @@ disable_tty(void)
{
int tty_mode = -1;

#if !DISABLE_DEVICE_TESTS
/* If we're running 'normally' on the VT, disable the keyboard to
* avoid messing up our host. But if we're inside gdb or running
* without forking, leave it as-is.
*/
if (jobs > 1 &&
if (!run_deviceless &&
jobs > 1 &&
!in_debugger &&
getenv("CK_FORK") == NULL &&
isatty(STDIN_FILENO) &&
Expand All @@ -4075,7 +4074,6 @@ disable_tty(void)
fprintf(stderr, "Failed to set terminal attribute: %d - %s\n", errno, strerror(errno));
#endif
}
#endif /* DISABLE_DEVICE_TESTS */

return tty_mode;
}
Expand All @@ -4097,9 +4095,14 @@ main(int argc, char **argv)
if (mode == LITEST_MODE_ERROR)
return EXIT_FAILURE;

rc = check_device_access();
if (rc != 0)
return rc;
/* You don't get to skip the deviceless tests */
if (!run_deviceless) {
if (getenv("SKIP_LIBINPUT_TEST_SUITE_RUNNER"))
return 77;

if ((rc = check_device_access()) != 0)
return rc;
}

litest_init_test_devices();

Expand Down

0 comments on commit 335554a

Please sign in to comment.