Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : 3 : : #include <stdbool.h> 4 : : #include <stddef.h> 5 : : 6 : : /* We use system assert.h here, because we don't want to keep macro.h and log.h C++ compatible */ 7 : : #undef NDEBUG 8 : : #include <assert.h> 9 : : #include <errno.h> 10 : : #include <stdio.h> 11 : : 12 : : #include "sd-bus-vtable.h" 13 : : 14 : : #ifndef __cplusplus 15 : : # include "bus-objects.h" 16 : : #endif 17 : : 18 : : #include "test-vtable-data.h" 19 : : 20 : : #define DEFAULT_BUS_PATH "unix:path=/run/dbus/system_bus_socket" 21 : : 22 : 4 : static void test_vtable(void) { 23 : 4 : sd_bus *bus = NULL; 24 : 4 : struct context c = {}; 25 : : int r; 26 : : 27 [ - + ]: 4 : assert(sd_bus_new(&bus) >= 0); 28 : : 29 [ - + ]: 4 : assert(sd_bus_add_object_vtable(bus, NULL, "/foo", "org.freedesktop.systemd.testVtable", test_vtable_2, &c) >= 0); 30 [ - + ]: 4 : assert(sd_bus_add_object_vtable(bus, NULL, "/foo", "org.freedesktop.systemd.testVtable2", test_vtable_2, &c) >= 0); 31 : : /* the cast on the line below is needed to test with the old version of the table */ 32 [ - + ]: 4 : assert(sd_bus_add_object_vtable(bus, NULL, "/foo", "org.freedesktop.systemd.testVtable221", 33 : : (const sd_bus_vtable *)vtable_format_221, &c) >= 0); 34 : : 35 [ - + ]: 4 : assert(sd_bus_set_address(bus, DEFAULT_BUS_PATH) >= 0); 36 : 4 : r = sd_bus_start(bus); 37 [ - + # # ]: 4 : assert(r == 0 || /* success */ 38 : : r == -ENOENT /* dbus is inactive */ ); 39 : : 40 : : #ifndef __cplusplus 41 : 4 : _cleanup_free_ char *s = NULL; 42 : : 43 [ - + ]: 4 : assert_se(introspect_path(bus, "/foo", NULL, false, true, NULL, &s, NULL) == 1); 44 : 4 : fputs(s, stdout); 45 : : #endif 46 : : 47 : 4 : sd_bus_unref(bus); 48 : 4 : } 49 : : 50 : 4 : int main(int argc, char **argv) { 51 : 4 : test_vtable(); 52 : : 53 : 4 : return 0; 54 : : }