[gtksourceview] testsuite: Fix a comparison which depended on GLib hash table ordering



commit c27dd44782c165ab85d92682972181e4c125361c
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 7590ff84..43b142aa 100644
--- a/testsuite/test-language.c
+++ b/testsuite/test-language.c
@@ -79,22 +79,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);
        }
 }
 
@@ -122,15 +124,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]