[glib: 8/9] tests: Fix bad node ordering assumption
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 8/9] tests: Fix bad node ordering assumption
- Date: Wed, 10 Oct 2018 23:02:44 +0000 (UTC)
commit 0600dd322022fea5f87276b61972bfe32cee9a77
Author: Hans Petter Jansson <hpj cl no>
Date: Wed Sep 5 18:04:37 2018 +0200
tests: Fix bad node ordering assumption
The tests were making assumptions about the order of the returned D-Bus
introspection nodes. However, these are semantically unordered and
changes to e.g. GHashTable would break the tests.
Fix this by applying a sort prior to validation.
gio/tests/gdbus-export.c | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
---
diff --git a/gio/tests/gdbus-export.c b/gio/tests/gdbus-export.c
index 4d6d3a43e..506c7458a 100644
--- a/gio/tests/gdbus-export.c
+++ b/gio/tests/gdbus-export.c
@@ -337,6 +337,22 @@ introspect_callback (GDBusProxy *proxy,
g_main_loop_quit (loop);
}
+static gint
+compare_strings (gconstpointer a,
+ gconstpointer b)
+{
+ const gchar *sa = *(const gchar **) a;
+ const gchar *sb = *(const gchar **) b;
+
+ /* Array terminator must sort last */
+ if (sa == NULL)
+ return 1;
+ if (sb == NULL)
+ return -1;
+
+ return strcmp (sa, sb);
+}
+
static gchar **
get_nodes_at (GDBusConnection *c,
const gchar *object_path)
@@ -390,6 +406,9 @@ get_nodes_at (GDBusConnection *c,
g_free (xml_data);
g_dbus_node_info_unref (node_info);
+ /* Nodes are semantically unordered; sort array so tests can rely on order */
+ g_ptr_array_sort (p, compare_strings);
+
return (gchar **) g_ptr_array_free (p, FALSE);
}
@@ -1240,9 +1259,9 @@ test_object_registration (void)
nodes = get_nodes_at (c, "/foo/dyna");
g_assert (nodes != NULL);
g_assert_cmpint (g_strv_length (nodes), ==, 3);
- g_assert_cmpstr (nodes[0], ==, "lol");
- g_assert_cmpstr (nodes[1], ==, "cat");
- g_assert_cmpstr (nodes[2], ==, "cheezburger");
+ g_assert_cmpstr (nodes[0], ==, "cat");
+ g_assert_cmpstr (nodes[1], ==, "cheezburger");
+ g_assert_cmpstr (nodes[2], ==, "lol");
g_strfreev (nodes);
g_assert_cmpint (count_interfaces (c, "/foo/dyna/lol"), ==, 4);
g_assert_cmpint (count_interfaces (c, "/foo/dyna/cat"), ==, 4);
@@ -1253,10 +1272,10 @@ test_object_registration (void)
nodes = get_nodes_at (c, "/foo/dyna");
g_assert (nodes != NULL);
g_assert_cmpint (g_strv_length (nodes), ==, 4);
- g_assert_cmpstr (nodes[0], ==, "lol");
- g_assert_cmpstr (nodes[1], ==, "cat");
- g_assert_cmpstr (nodes[2], ==, "cheezburger");
- g_assert_cmpstr (nodes[3], ==, "dynamicallycreated");
+ g_assert_cmpstr (nodes[0], ==, "cat");
+ g_assert_cmpstr (nodes[1], ==, "cheezburger");
+ g_assert_cmpstr (nodes[2], ==, "dynamicallycreated");
+ g_assert_cmpstr (nodes[3], ==, "lol");
g_strfreev (nodes);
g_assert_cmpint (count_interfaces (c, "/foo/dyna/dynamicallycreated"), ==, 4);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]