test: print strerror() if uinput device creation fails
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 17 Sep 2014 00:30:45 +0000 (10:30 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 17 Sep 2014 03:35:41 +0000 (13:35 +1000)
The most common error running the test suite is not running as root, but the
error message is hard to interpret. Make it more explicit when it failed,
printing the strerror of the errno.

Note that libevdev 1.3 is needed to get EACCES instead of EBADF
http://cgit.freedesktop.org/libevdev/commit/?id=debe9b030c8069cdf78307888ef3b65830b25122
A workaround is put in place for now until libevdev 1.3 is commonplace.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
test/litest.c

index dbbf054354a6df2dff3565b14adf8ed8229b03a3..f99d145a20655ecb3f70835506abaf0642bd143a 100644 (file)
@@ -958,7 +958,11 @@ litest_create_uinput_device_from_description(const char *name,
        rc = libevdev_uinput_create_from_device(dev,
                                                LIBEVDEV_UINPUT_OPEN_MANAGED,
                                                &uinput);
-       ck_assert_int_eq(rc, 0);
+       /* workaround for a bug in libevdev pre-1.3
+          http://cgit.freedesktop.org/libevdev/commit/?id=debe9b030c8069cdf78307888ef3b65830b25122 */
+       if (rc == -EBADF)
+               rc = -EACCES;
+       ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc));
 
        libevdev_free(dev);