From: Simon McVittie Date: Sat, 29 Jun 2019 14:16:03 +0000 (+0100) Subject: tests: Skip if unable to launch uninstalled dbus-daemon as other uid X-Git-Tag: dbus-1.13.14~27^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e148aa47d365ef28c524d666e060f3c8b7a9891f;p=thirdparty%2Fdbus.git tests: Skip if unable to launch uninstalled dbus-daemon as other uid Some CI systems do the entire build as uid 0 in a throwaway container. If this is done in a build directory for which the messagebus user does not have search (+x) permission, then they will be unable to execute the just-built dbus-daemon binary. Signed-off-by: Simon McVittie --- diff --git a/test/test-utils-glib.c b/test/test-utils-glib.c index 7cc92bc72..cac62e359 100644 --- a/test/test-utils-glib.c +++ b/test/test-utils-glib.c @@ -209,6 +209,24 @@ spawn_dbus_daemon (const gchar *binary, &address_fd, NULL, /* child's stderr = our stderr */ &error); + + /* The other uid might not have access to our build directory if we + * are building in /root or something */ + if (user != TEST_USER_ME && + g_getenv ("DBUS_TEST_UNINSTALLED") != NULL && + error != NULL && + error->domain == G_SPAWN_ERROR && + (error->code == G_SPAWN_ERROR_CHDIR || + error->code == G_SPAWN_ERROR_ACCES || + error->code == G_SPAWN_ERROR_PERM)) + { + g_prefix_error (&error, "Unable to launch %s as other user: ", + binary); + g_test_skip (error->message); + g_clear_error (&error); + return NULL; + } + g_assert_no_error (error); g_ptr_array_free (argv, TRUE);