dbus-daemon test: don't assert we pass uid/pid on unknown Unix platforms
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 15 Sep 2014 17:04:36 +0000 (18:04 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 6 Nov 2014 14:29:43 +0000 (14:29 +0000)
We know that Linux, FreeBSD and OpenBSD are "first class citizens"
for credentials-passing, with NetBSD not far behind: people have
turned up on the bug tracking system and told us that tests passed.
On other Unixes, we can't really assert that it works, until someone
who runs them tells us that it worked for them.

Additions to these lists are welcome.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=69702
Reviewed-by: Patrick Welche <prlw1@cam.ac.uk>
Reviewed-by: Alban Crequy <alban.crequy@collabora.co.uk>
Tested-by: Patrick Welche <prlw1@cam.ac.uk>
test/dbus-daemon.c

index 1db4e44..43f3445 100644 (file)
 
 #include "test-utils.h"
 
+/* Platforms where we know that credentials-passing passes both the
+ * uid and the pid. Please keep these in alphabetical order.
+ *
+ * These platforms should #error in _dbus_read_credentials_socket()
+ * if we didn't detect their flavour of credentials-passing, since that
+ * would be a regression.
+ */
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
+  defined(__linux__) || \
+  defined(__OpenBSD__)
+# define UNIX_USER_SHOULD_WORK
+# define PID_SHOULD_WORK
+#endif
+
+/* Platforms where we know that credentials-passing passes the
+ * uid, but not necessarily the pid. Again, alphabetical order please.
+ *
+ * These platforms should also #error in _dbus_read_credentials_socket()
+ * if we didn't detect their flavour of credentials-passing.
+ */
+#if defined(__NetBSD__)
+# define UNIX_USER_SHOULD_WORK
+#endif
+
 typedef struct {
     gboolean skip;
 
@@ -528,8 +552,11 @@ test_creds (Fixture *f,
       dbus_message_iter_next (&arr_iter);
     }
 
-#ifdef G_OS_UNIX
+#ifdef UNIX_USER_SHOULD_WORK
   g_assert (seen & SEEN_UNIX_USER);
+#endif
+
+#ifdef PID_SHOULD_WORK
   g_assert (seen & SEEN_PID);
 #endif