diff options
author | Mike Gorse <mgorse@suse.com> | 2012-11-12 11:34:53 -0600 |
---|---|---|
committer | Mike Gorse <mgorse@suse.com> | 2012-11-12 11:40:23 -0600 |
commit | dd563f2f65b447454cae7c39943470af72fc7a25 (patch) | |
tree | 18d8b0df6967b049615e6fceff98df8be746c395 /droute/droute-test.c | |
parent | 576a27a3fabbd3a8c1421d4322cafd47f02c1ada (diff) | |
download | at-spi2-core-dd563f2f65b447454cae7c39943470af72fc7a25.tar.gz |
Fix droute test, and remove dbind dependency
The droute test was broken (it had not been updated for recent API
changes and also did not return a non-zero exit code on failure). Also,
it is the only thing in at-spi2-atk that uses dbind, so re-worked it to
call libdbus directly, so that we can remove dbind / avoid having it
both here and in at-spi2-core.
Diffstat (limited to 'droute/droute-test.c')
-rw-r--r-- | droute/droute-test.c | 71 |
1 files changed, 52 insertions, 19 deletions
diff --git a/droute/droute-test.c b/droute/droute-test.c index a2ebe4d7..1865622f 100644 --- a/droute/droute-test.c +++ b/droute/droute-test.c @@ -1,8 +1,8 @@ #include <stdio.h> +#include <stdlib.h> #include <glib.h> #include <string.h> #include <droute/droute.h> -#include <dbind/dbind.h> #include "atspi/atspi.h" @@ -185,11 +185,39 @@ static DRouteProperty test_properties[] = { {NULL, NULL, NULL} }; +static void +set_reply (DBusPendingCall *pending, void *user_data) +{ + void **replyptr = (void **)user_data; + + *replyptr = dbus_pending_call_steal_reply (pending); +} + +static DBusMessage * +send_and_allow_reentry (DBusConnection *bus, DBusMessage *message, DBusError *error) +{ + DBusPendingCall *pending; + DBusMessage *reply = NULL; + + if (!dbus_connection_send_with_reply (bus, message, &pending, -1)) + { + return NULL; + } + dbus_pending_call_set_notify (pending, set_reply, (void *)&reply, NULL); + while (!reply) + { + if (!dbus_connection_read_write_dispatch (bus, -1)) + return NULL; + } + return reply; +} + gboolean do_tests_func (gpointer data) { DBusError error; const gchar *bus_name; + DBusMessage *message, *reply; gchar *expected_string; gchar *result_string; @@ -199,30 +227,33 @@ do_tests_func (gpointer data) /* --------------------------------------------------------*/ - dbind_method_call_reentrant (bus, - bus_name, - TEST_OBJECT_PATH, - TEST_INTERFACE_ONE, - "null", - NULL, - ""); + message = dbus_message_new_method_call (bus_name, + TEST_OBJECT_PATH, + TEST_INTERFACE_ONE, + "null"); + reply = send_and_allow_reentry (bus, message, NULL); + dbus_message_unref (message); + if (reply) + dbus_message_unref (reply); /* --------------------------------------------------------*/ expected_string = TEST_INTERFACE_ONE; result_string = NULL; - dbind_method_call_reentrant (bus, - bus_name, - TEST_OBJECT_PATH, - TEST_INTERFACE_ONE, - "getInterfaceOne", - NULL, - "=>s", - &result_string); + message = dbus_message_new_method_call (bus_name, + TEST_OBJECT_PATH, + TEST_INTERFACE_ONE, + "getInterfaceOne"); + reply = send_and_allow_reentry (bus, message, NULL); + dbus_message_unref (message); + dbus_message_get_args (reply, NULL, DBUS_TYPE_STRING, &result_string, + DBUS_TYPE_INVALID); + dbus_message_unref (reply); if (g_strcmp0(expected_string, result_string)) { - g_print ("Failed: reply to getInterfaceOne not as expected\n"); - goto out; + g_print ("Failed: reply to getInterfaceOne was %s; expected %s\n", + result_string, expected_string); + exit (1); } /* --------------------------------------------------------*/ @@ -251,7 +282,7 @@ int main (int argc, char **argv) bus = dbus_bus_get (DBUS_BUS_SESSION, &error); atspi_dbus_connection_setup_with_g_main(bus, g_main_context_default()); - cnx = droute_new (bus); + cnx = droute_new (); path = droute_add_one (cnx, TEST_OBJECT_PATH, object); droute_path_add_interface (path, @@ -266,6 +297,8 @@ int main (int argc, char **argv) test_methods_two, test_properties); + droute_path_register (path, bus); + g_idle_add (do_tests_func, NULL); g_main_loop_run(main_loop); if (success) |