From: Peter Hutterer Date: Fri, 15 Jun 2018 05:08:53 +0000 (+1000) Subject: test: check for the device nodes to exist before testing X-Git-Tag: libevdev-1.6.0~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1f9e087dac9b2a8dd89728785dba2ab7cf9301e4;p=platform%2Fupstream%2Flibevdev.git test: check for the device nodes to exist before testing Even if we're root we may be running in a container without input device nodes. In which case we should skip the test, not fail. Signed-off-by: Peter Hutterer --- diff --git a/test/test-main.c b/test/test-main.c index 42a8802..fa4c48c 100644 --- a/test/test-main.c +++ b/test/test-main.c @@ -22,12 +22,15 @@ #include #include +#include #include #include #include #include #include #include +#include +#include #include #include "test-common.h" @@ -60,6 +63,24 @@ is_debugger_attached(void) return rc; } +static bool +device_nodes_exist(void) +{ + struct stat st; + int rc; + + rc = stat("/dev/uinput", &st); + if (rc == -1 && errno == ENOENT) + return false; + + rc = stat("/dev/input", &st); + if (rc == -1 && errno == ENOENT) + return false; + + /* Any issues but ENOENT we just let the test suite blow up later */ + return true; +} + extern const struct libevdev_test __start_test_section, __stop_test_section; int main(void) @@ -70,10 +91,16 @@ int main(void) for (t = &__start_test_section; t < &__stop_test_section; t++) { if (t->needs_root_privileges) { + if (getuid() != 0) { fprintf(stderr, "This test needs to run as root\n"); return 77; } + if (!device_nodes_exist()) { + fprintf(stderr, "This test needs /dev/input and /dev/uinput to exist\n"); + return 77; + } + break; } }