[gtksourceview/gnome-3-24] testsuite: Fix a comparison which depended on GLib hash table ordering



commit 2fd12705ab40ceb6cc9d1458c7bccf886d145212
Author: Philip Withnall <withnall endlessm com>
Date:   Mon Mar 11 11:48:44 2019 +0000

    testsuite: Fix a comparison which depended on GLib hash table ordering
    
    In GLib 2.59, the iteration order of GHashTable was changed (its order
    has always be, and will always be, undefined). This has broken some
    comparisons in check_language() in test-language.c, which assumed a
    certain hash table ordering for the results returned by
    gtk_source_language_get_*().
    
    Fix that by using an unordered comparison function. This should be
    backwards compatible with older GLib versions.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>

 testsuite/test-language.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/testsuite/test-language.c b/testsuite/test-language.c
index 0719a5a6..980e8e3e 100644
--- a/testsuite/test-language.c
+++ b/testsuite/test-language.c
@@ -80,22 +80,24 @@ test_fixture_teardown (TestFixture   *fixture,
 }
 
 static void
-compare_strv (const gchar **strv,
-             const gchar **expected_strv)
+compare_strv_unordered (const gchar **strv,
+                        const gchar **expected_strv)
 {
        if (expected_strv != NULL)
        {
-               guint n, i;
+               guint i;
 
-               n = g_strv_length ((gchar **) expected_strv);
-               for (i = 0; i < n; i++)
+               g_assert_cmpuint (g_strv_length ((gchar **) strv), ==,
+                                 g_strv_length ((gchar **) expected_strv));
+
+               for (i = 0; expected_strv[i] != NULL; i++)
                {
-                       g_assert_cmpstr (strv[i], ==, expected_strv[i]);
+                       g_assert_true (g_strv_contains (strv, expected_strv[i]));
                }
        }
        else
        {
-               g_assert (strv == NULL);
+               g_assert_null (strv);
        }
 }
 
@@ -123,15 +125,15 @@ check_language (GtkSourceLanguage  *language,
        g_assert_cmpstr (gtk_source_language_get_metadata (language, "extra-meta"), ==, expected_extra_meta);
 
        mime = gtk_source_language_get_mime_types (language);
-       compare_strv ((const gchar **) mime, expected_mime);
+       compare_strv_unordered ((const gchar **) mime, expected_mime);
        g_strfreev (mime);
 
        glob = gtk_source_language_get_globs (language);
-       compare_strv ((const gchar **) glob, expected_glob);
+       compare_strv_unordered ((const gchar **) glob, expected_glob);
        g_strfreev (glob);
 
        styles = gtk_source_language_get_style_ids (language);
-       compare_strv ((const gchar **) styles, expected_styles);
+       compare_strv_unordered ((const gchar **) styles, expected_styles);
        g_strfreev (styles);
 
        if (expected_style_name != NULL)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]