Files
gtk3/debian/patches/Avoid-repeated-g_log_set_writer_func-in-tests.patch
Simon McVittie d03dca1d46 d/patches: Update to upstream gtk-3-24 branch commit 3.24.34-204-g2fcc114870
Windows- and macOS-specific changes excluded.
2022-11-15 11:28:51 +00:00

154 lines
4.8 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From: Simon McVittie <smcv@debian.org>
Date: Sat, 20 Aug 2022 19:24:58 +0100
Subject: Avoid repeated g_log_set_writer_func in tests
Since GLib 2.73.0 it can only be called once per process.
Based on commit 78c153ae in GTK 4, but combining the icontheme test's
two custom log writers into one log writer that serves both purposes,
to avoid the need for a subprocess.
Co-authored-by: Matthias Clasen <mclasen@redhat.com>
Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/5119
Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4968
Applied-upstream: 3.24.35, commit:a4f45483b1203af66eb5b2de52118ecb754c0948
---
testsuite/gtk/icontheme.c | 30 ++++++++++++------------------
testsuite/gtk/treestore.c | 30 +++++++++++++-----------------
2 files changed, 25 insertions(+), 35 deletions(-)
diff --git a/testsuite/gtk/icontheme.c b/testsuite/gtk/icontheme.c
index 7eed015..1fdf3d1 100644
--- a/testsuite/gtk/icontheme.c
+++ b/testsuite/gtk/icontheme.c
@@ -121,6 +121,7 @@ assert_icon_lookup_fails (const char *icon_name,
}
static GList *lookups = NULL;
+static gboolean collecting_lookups = FALSE;
static GLogWriterOutput
log_writer (GLogLevelFlags log_level,
@@ -128,10 +129,17 @@ log_writer (GLogLevelFlags log_level,
gsize n_fields,
gpointer user_data)
{
+ gboolean *ignore_warnings = user_data;
const char *domain = NULL;
const char *msg = NULL;
int i;
+ if (log_level == G_LOG_LEVEL_WARNING && *ignore_warnings)
+ return G_LOG_WRITER_HANDLED;
+
+ if (!collecting_lookups)
+ return g_log_writer_default (log_level, fields, n_fields, user_data);
+
for (i = 0; i < n_fields; i++)
{
if (strcmp (fields[i].key, "GLIB_DOMAIN") == 0)
@@ -173,14 +181,14 @@ assert_lookup_order (const char *icon_name,
debug_flags = gtk_get_debug_flags ();
gtk_set_debug_flags (debug_flags | GTK_DEBUG_ICONTHEME);
- g_log_set_writer_func (log_writer, NULL, NULL);
+ collecting_lookups = TRUE;
g_assert (lookups == NULL);
info = gtk_icon_theme_lookup_icon (get_test_icontheme (FALSE), icon_name, size, flags);
if (info)
g_object_unref (info);
-
+
va_start (args, first);
s = first;
l = lookups;
@@ -197,7 +205,7 @@ assert_lookup_order (const char *icon_name,
g_list_free_full (lookups, g_free);
lookups = NULL;
- g_log_set_writer_func (g_log_writer_default, NULL, NULL);
+ collecting_lookups = FALSE;
gtk_set_debug_flags (debug_flags);
}
@@ -778,20 +786,6 @@ test_nonsquare_symbolic (void)
g_object_unref (info);
}
-static GLogWriterOutput
-log_writer_drop_warnings (GLogLevelFlags log_level,
- const GLogField *fields,
- gsize n_fields,
- gpointer user_data)
-{
- gboolean *ignore_warnings = user_data;
-
- if (log_level == G_LOG_LEVEL_WARNING && *ignore_warnings)
- return G_LOG_WRITER_HANDLED;
-
- return g_log_writer_default (log_level, fields, n_fields, user_data);
-}
-
int
main (int argc, char *argv[])
{
@@ -801,7 +795,7 @@ main (int argc, char *argv[])
/* Ignore the one-time warning that the fallback icon theme cant be found
* (because weve changed the search paths). */
- g_log_set_writer_func (log_writer_drop_warnings, &ignore_warnings, NULL);
+ g_log_set_writer_func (log_writer, &ignore_warnings, NULL);
assert_icon_lookup_fails ("this-icon-totally-does-not-exist", 16, 0);
ignore_warnings = FALSE;
diff --git a/testsuite/gtk/treestore.c b/testsuite/gtk/treestore.c
index 109b0dc..50126f6 100644
--- a/testsuite/gtk/treestore.c
+++ b/testsuite/gtk/treestore.c
@@ -1049,30 +1049,26 @@ specific_bug_77977 (void)
g_object_unref (tree_store);
}
-static GLogWriterOutput
-log_writer_drop_warnings (GLogLevelFlags log_level,
- const GLogField *fields,
- gsize n_fields,
- gpointer user_data)
-{
- return G_LOG_WRITER_HANDLED;
-}
-
static void
specific_bug_698396 (void)
{
- GtkTreeStore *tree_store;
- gint new_order[1] = { 0 };
-
g_test_bug ("698396");
- tree_store = gtk_tree_store_new (1, G_TYPE_STRING);
+ if (g_test_subprocess ())
+ {
+ GtkTreeStore *tree_store;
+ int new_order[1] = { 0 };
- g_log_set_writer_func (log_writer_drop_warnings, NULL, NULL);
- gtk_tree_store_reorder (tree_store, NULL, new_order);
- g_log_set_writer_func (g_log_writer_default, NULL, NULL);
+ tree_store = gtk_tree_store_new (1, G_TYPE_STRING);
+ gtk_tree_store_reorder (tree_store, NULL, new_order);
+ g_object_unref (tree_store);
- g_object_unref (tree_store);
+ return;
+ }
+
+ g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_assert_stderr ("*Cannot reorder, parent has no children*");
+ g_test_trap_assert_failed ();
}
/* main */