|  | /* Utility functions for tests that rely on GLib | 
|  | * | 
|  | * Copyright © 2010-2011 Nokia Corporation | 
|  | * Copyright © 2013-2015 Collabora Ltd. | 
|  | * | 
|  | * Permission is hereby granted, free of charge, to any person | 
|  | * obtaining a copy of this software and associated documentation files | 
|  | * (the "Software"), to deal in the Software without restriction, | 
|  | * including without limitation the rights to use, copy, modify, merge, | 
|  | * publish, distribute, sublicense, and/or sell copies of the Software, | 
|  | * and to permit persons to whom the Software is furnished to do so, | 
|  | * subject to the following conditions: | 
|  | * | 
|  | * The above copyright notice and this permission notice shall be | 
|  | * included in all copies or substantial portions of the Software. | 
|  | * | 
|  | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | 
|  | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | 
|  | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | 
|  | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | 
|  | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | 
|  | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | 
|  | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | 
|  | * SOFTWARE. | 
|  | */ | 
|  |  | 
|  | #ifndef TEST_UTILS_GLIB_H | 
|  | #define TEST_UTILS_GLIB_H | 
|  |  | 
|  | #include <dbus/dbus.h> | 
|  |  | 
|  | #include <glib.h> | 
|  |  | 
|  | #include "test-utils.h" | 
|  |  | 
|  | /* | 
|  | * Multi-user support for regression tests run with root privileges in | 
|  | * a continuous integration system. | 
|  | * | 
|  | * A developer would normally run the tests as their own uid. Tests run | 
|  | * as TEST_USER_ME are run, and the others are skipped. | 
|  | * | 
|  | * In a CI system that has access to root privileges, most tests should still | 
|  | * be run as an arbitrary non-root user, as above. | 
|  | * | 
|  | * Certain tests can usefully be run again, as root. When this is done, | 
|  | * tests using TEST_USER_ROOT, TEST_USER_MESSAGEBUS and/or TEST_USER_OTHER | 
|  | * can exercise situations that only arise when there's more than one uid. | 
|  | */ | 
|  | typedef enum { | 
|  | /* Whatever user happens to be running the regression test; | 
|  | * such tests also work on Windows */ | 
|  | TEST_USER_ME, | 
|  | /* Must be uid 0 on Unix; the test is skipped on Windows */ | 
|  | TEST_USER_ROOT, | 
|  | /* The user who would normally run the system bus. This is the DBUS_USER | 
|  | * from configure.ac, usually 'messagebus' but perhaps 'dbus' or | 
|  | * '_dbus'. */ | 
|  | TEST_USER_MESSAGEBUS, | 
|  | /* An unprivileged user who is neither root nor DBUS_USER. | 
|  | * This is DBUS_TEST_USER from configure.ac, usually 'nobody'. */ | 
|  | TEST_USER_OTHER | 
|  | } TestUser; | 
|  |  | 
|  | #define test_assert_no_error(e) _test_assert_no_error (e, __FILE__, __LINE__) | 
|  | void _test_assert_no_error (const DBusError *e, | 
|  | const char *file, | 
|  | int line); | 
|  |  | 
|  | gchar *test_get_dbus_daemon (const gchar *config_file, | 
|  | TestUser user, | 
|  | GPid *daemon_pid); | 
|  |  | 
|  | DBusConnection *test_connect_to_bus (TestMainContext *ctx, | 
|  | const gchar *address); | 
|  | DBusConnection *test_connect_to_bus_as_user (TestMainContext *ctx, | 
|  | const char *address, | 
|  | TestUser user); | 
|  |  | 
|  | void test_kill_pid (GPid pid); | 
|  |  | 
|  | void test_init (int *argcp, char ***argvp); | 
|  |  | 
|  | void test_progress (char symbol); | 
|  |  | 
|  | #if !GLIB_CHECK_VERSION (2, 38, 0) | 
|  | #define g_test_skip(s) my_test_skip (s) | 
|  | static inline void my_test_skip (const gchar *s) | 
|  | { | 
|  | g_test_message ("SKIP: %s", s); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif |