summaryrefslogtreecommitdiff
path: root/droute
diff options
context:
space:
mode:
authorMike Gorse <mgorse@suse.com>2012-11-12 11:34:53 -0600
committerMike Gorse <mgorse@suse.com>2012-11-12 11:40:23 -0600
commitdd563f2f65b447454cae7c39943470af72fc7a25 (patch)
tree18d8b0df6967b049615e6fceff98df8be746c395 /droute
parent576a27a3fabbd3a8c1421d4322cafd47f02c1ada (diff)
downloadat-spi2-atk-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')
-rw-r--r--droute/Makefile.am3
-rw-r--r--droute/droute-test.c71
2 files changed, 53 insertions, 21 deletions
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 <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)