From: Mike Gorse Date: Mon, 12 Nov 2012 17:34:53 +0000 (-0600) Subject: Fix droute test, and remove dbind dependency X-Git-Tag: AT_SPI2_ATK_2_12_0~57 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=commitdiff_plain;h=dd563f2f65b447454cae7c39943470af72fc7a25;ds=sidebyside 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. --- diff --git a/droute/Makefile.am b/droute/Makefile.am index b1805c0..f214d19 100644 --- a/droute/Makefile.am +++ b/droute/Makefile.am @@ -24,8 +24,7 @@ droute_test_CFLAGS = $(DBUS_CFLAGS) \ $(ATSPI_CFLAGS) \ -I$(top_srcdir) -droute_test_LDFLAGS = $(top_builddir)/dbind/libdbind.la\ - libdroute.la\ +droute_test_LDFLAGS = libdroute.la\ $(DBUS_LIBS) \ $(GLIB_LIBS) \ $(ATSPI_LIBS) diff --git a/droute/droute-test.c b/droute/droute-test.c index a2ebe4d..1865622 100644 --- a/droute/droute-test.c +++ b/droute/droute-test.c @@ -1,8 +1,8 @@ #include +#include #include #include #include -#include #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)