chiark / gitweb /
sd-bus: make sure %m resolves to the specified error in bus_error_set_errnofv()
[elogind.git] / src / libsystemd / sd-bus / test-bus-cleanup.c
index d8ddb8452e536dba3b4bf9fe4b90392128e1602f..f58688059304e821be5be2495317eeaf9814eb9f 100644 (file)
@@ -34,11 +34,18 @@ static void test_bus_new(void) {
         printf("after new: refcount %u\n", REFCNT_GET(bus->n_ref));
 }
 
-static void test_bus_open(void) {
+static int test_bus_open(void) {
         _cleanup_bus_unref_ sd_bus *bus = NULL;
+        int r;
 
-        assert_se(sd_bus_open_system(&bus) >= 0);
+        r = sd_bus_open_system(&bus);
+        if (r == -ECONNREFUSED || r == -ENOENT)
+                return r;
+
+        assert_se(r >= 0);
         printf("after open: refcount %u\n", REFCNT_GET(bus->n_ref));
+
+        return 0;
 }
 
 static void test_bus_new_method_call(void) {
@@ -47,7 +54,7 @@ static void test_bus_new_method_call(void) {
 
         assert_se(sd_bus_open_system(&bus) >= 0);
 
-        assert_se(sd_bus_message_new_method_call(bus, "a.service.name", "/an/object/path", "an.interface.name", "AMethodName", &m) >= 0);
+        assert_se(sd_bus_message_new_method_call(bus, &m, "a.service.name", "/an/object/path", "an.interface.name", "AMethodName") >= 0);
 
         printf("after message_new_method_call: refcount %u\n", REFCNT_GET(bus->n_ref));
 
@@ -61,7 +68,7 @@ static void test_bus_new_signal(void) {
 
         assert_se(sd_bus_open_system(&bus) >= 0);
 
-        assert_se(sd_bus_message_new_signal(bus, "/an/object/path", "an.interface.name", "Name", &m) >= 0);
+        assert_se(sd_bus_message_new_signal(bus, &m, "/an/object/path", "an.interface.name", "Name") >= 0);
 
         printf("after message_new_signal: refcount %u\n", REFCNT_GET(bus->n_ref));
 
@@ -70,11 +77,20 @@ static void test_bus_new_signal(void) {
 }
 
 int main(int argc, char **argv) {
+        int r;
+
         log_parse_environment();
         log_open();
 
         test_bus_new();
-        test_bus_open();
+        r = test_bus_open();
+        if (r < 0) {
+                log_info("Failed to connect to bus, skipping tests.");
+                return EXIT_TEST_SKIP;
+        }
+
         test_bus_new_method_call();
         test_bus_new_signal();
+
+        return EXIT_SUCCESS;
 }