]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
tests: Skip if unable to launch uninstalled dbus-daemon as other uid
authorSimon McVittie <smcv@collabora.com>
Sat, 29 Jun 2019 14:16:03 +0000 (15:16 +0100)
committerSimon McVittie <smcv@collabora.com>
Wed, 3 Jul 2019 10:11:23 +0000 (11:11 +0100)
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 <smcv@collabora.com>
test/test-utils-glib.c

index 7cc92bc725f3397ebfb91044540e12700729801e..cac62e3593e6cbe02a34a20109c99187451a1865 100644 (file)
@@ -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);