}
static GList *lookups = NULL;
+static gboolean collecting_lookups = FALSE;
static GLogWriterOutput
log_writer (GLogLevelFlags log_level,
const char *msg = NULL;
int i;
+ 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)
const char *first,
...)
{
- guint debug_flags;
va_list args;
const char *s;
GtkIconPaintable *info;
GList *l;
-/* this hack is only usable in debug builds */
-#ifndef G_ENABLE_DEBUG
- g_assert_not_reached ();
-#endif
-
- debug_flags = gtk_get_debug_flags ();
- gtk_set_debug_flags (debug_flags | GTK_DEBUG_ICONTHEME);
- g_log_set_writer_func (log_writer, NULL, NULL);
-
g_assert_null (lookups);
+ collecting_lookups = TRUE;
if (fallbacks)
{
if (info)
g_object_unref (info);
-
+
+ collecting_lookups = FALSE;
+
va_start (args, first);
s = first;
l = lookups;
g_list_free_full (lookups, g_free);
lookups = NULL;
-
- g_log_set_writer_func (g_log_writer_default, NULL, NULL);
- gtk_set_debug_flags (debug_flags);
}
#ifdef G_ENABLE_DEBUG
return;
#endif
-
static void
-test_basics (void)
+test_lookup_order (void)
{
- /* just a basic boring lookup so we know everything works */
- assert_icon_lookup ("simple", 16, GTK_TEXT_DIR_NONE, 0, FALSE, "/icons/16x16/simple.png");
+ require_debug ();
+
+ if (g_test_subprocess ())
+ {
+ guint debug_flags;
+
+ debug_flags = gtk_get_debug_flags ();
+ gtk_set_debug_flags (debug_flags | GTK_DEBUG_ICONTHEME);
+
+ g_log_set_writer_func (log_writer, NULL, NULL);
+
+ assert_lookup_order ("foo-bar-baz", 16, GTK_TEXT_DIR_NONE, 0, TRUE,
+ "foo-bar-baz",
+ "foo-bar",
+ "foo",
+ "foo-bar-baz-symbolic",
+ "foo-bar-symbolic",
+ "foo-symbolic",
+ NULL);
+ assert_lookup_order ("foo-bar-baz", 16, GTK_TEXT_DIR_RTL, 0, TRUE,
+ "foo-bar-baz-rtl",
+ "foo-bar-baz",
+ "foo-bar-rtl",
+ "foo-bar",
+ "foo-rtl",
+ "foo",
+ "foo-bar-baz-symbolic-rtl",
+ "foo-bar-baz-symbolic",
+ "foo-bar-symbolic-rtl",
+ "foo-bar-symbolic",
+ "foo-symbolic-rtl",
+ "foo-symbolic",
+ NULL);
+ assert_lookup_order ("foo-bar-baz", 16, GTK_TEXT_DIR_RTL, 0, FALSE,
+ "foo-bar-baz-rtl",
+ "foo-bar-baz",
+ NULL);
+ assert_lookup_order ("foo-bar-baz-symbolic", 16, GTK_TEXT_DIR_NONE, 0, TRUE,
+ "foo-bar-baz-symbolic",
+ "foo-bar-symbolic",
+ "foo-symbolic",
+ "foo-bar-baz",
+ "foo-bar",
+ "foo",
+ NULL);
+
+ assert_lookup_order ("bla-bla", 16, GTK_TEXT_DIR_NONE, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
+ "bla-bla-symbolic",
+ "bla-symbolic",
+ "bla-bla-symbolic", /* awkward */
+ "bla-symbolic", /* awkward */
+ "bla-bla",
+ "bla",
+ NULL);
+ assert_lookup_order ("bla-bla-symbolic", 16, GTK_TEXT_DIR_NONE, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
+ "bla-bla-symbolic",
+ "bla-symbolic",
+ "bla-bla-symbolic", /* awkward */
+ "bla-symbolic", /* awkward */
+ "bla-bla",
+ "bla",
+ NULL);
+
+ assert_lookup_order ("bar-baz", 16, GTK_TEXT_DIR_RTL, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
+ "bar-baz-symbolic-rtl",
+ "bar-baz-symbolic",
+ "bar-symbolic-rtl",
+ "bar-symbolic",
+ "bar-baz-symbolic-rtl", /* awkward */
+ "bar-baz-symbolic", /* awkward */
+ "bar-symbolic-rtl", /* awkward */
+ "bar-symbolic", /* awkward */
+ "bar-baz-rtl",
+ "bar-baz",
+ "bar-rtl",
+ "bar",
+ NULL);
+ assert_lookup_order ("bar-baz-symbolic", 16, GTK_TEXT_DIR_RTL, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
+ "bar-baz-symbolic-rtl",
+ "bar-baz-symbolic",
+ "bar-symbolic-rtl",
+ "bar-symbolic",
+ "bar-baz-symbolic-rtl", /* awkward */
+ "bar-baz-symbolic", /* awkward */
+ "bar-symbolic-rtl", /* awkward */
+ "bar-symbolic", /* awkward */
+ "bar-baz-rtl",
+ "bar-baz",
+ "bar-rtl",
+ "bar",
+ NULL);
+
+ assert_lookup_order ("bar-baz", 16, GTK_TEXT_DIR_LTR, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
+ "bar-baz-symbolic-ltr",
+ "bar-baz-symbolic",
+ "bar-symbolic-ltr",
+ "bar-symbolic",
+ "bar-baz-symbolic-ltr", /* awkward */
+ "bar-baz-symbolic", /* awkward */
+ "bar-symbolic-ltr", /* awkward */
+ "bar-symbolic", /* awkward */
+ "bar-baz-ltr",
+ "bar-baz",
+ "bar-ltr",
+ "bar",
+ NULL);
+ assert_lookup_order ("bar-baz-symbolic", 16, GTK_TEXT_DIR_LTR, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
+ "bar-baz-symbolic-ltr",
+ "bar-baz-symbolic",
+ "bar-symbolic-ltr",
+ "bar-symbolic",
+ "bar-baz-symbolic-ltr", /* awkward */
+ "bar-baz-symbolic", /* awkward */
+ "bar-symbolic-ltr", /* awkward */
+ "bar-symbolic", /* awkward */
+ "bar-baz-ltr",
+ "bar-baz",
+ "bar-ltr",
+ "bar",
+ NULL);
+
+ return;
+ }
+
+ g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_has_passed ();
}
static void
-test_lookup_order (void)
+test_basics (void)
{
- require_debug ();
-
- assert_lookup_order ("foo-bar-baz", 16, GTK_TEXT_DIR_NONE, 0, TRUE,
- "foo-bar-baz",
- "foo-bar",
- "foo",
- "foo-bar-baz-symbolic",
- "foo-bar-symbolic",
- "foo-symbolic",
- NULL);
- assert_lookup_order ("foo-bar-baz", 16, GTK_TEXT_DIR_RTL, 0, TRUE,
- "foo-bar-baz-rtl",
- "foo-bar-baz",
- "foo-bar-rtl",
- "foo-bar",
- "foo-rtl",
- "foo",
- "foo-bar-baz-symbolic-rtl",
- "foo-bar-baz-symbolic",
- "foo-bar-symbolic-rtl",
- "foo-bar-symbolic",
- "foo-symbolic-rtl",
- "foo-symbolic",
- NULL);
- assert_lookup_order ("foo-bar-baz", 16, GTK_TEXT_DIR_RTL, 0, FALSE,
- "foo-bar-baz-rtl",
- "foo-bar-baz",
- NULL);
- assert_lookup_order ("foo-bar-baz-symbolic", 16, GTK_TEXT_DIR_NONE, 0, TRUE,
- "foo-bar-baz-symbolic",
- "foo-bar-symbolic",
- "foo-symbolic",
- "foo-bar-baz",
- "foo-bar",
- "foo",
- NULL);
-
- assert_lookup_order ("bla-bla", 16, GTK_TEXT_DIR_NONE, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
- "bla-bla-symbolic",
- "bla-symbolic",
- "bla-bla-symbolic", /* awkward */
- "bla-symbolic", /* awkward */
- "bla-bla",
- "bla",
- NULL);
- assert_lookup_order ("bla-bla-symbolic", 16, GTK_TEXT_DIR_NONE, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
- "bla-bla-symbolic",
- "bla-symbolic",
- "bla-bla-symbolic", /* awkward */
- "bla-symbolic", /* awkward */
- "bla-bla",
- "bla",
- NULL);
-
- assert_lookup_order ("bar-baz", 16, GTK_TEXT_DIR_RTL, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
- "bar-baz-symbolic-rtl",
- "bar-baz-symbolic",
- "bar-symbolic-rtl",
- "bar-symbolic",
- "bar-baz-symbolic-rtl", /* awkward */
- "bar-baz-symbolic", /* awkward */
- "bar-symbolic-rtl", /* awkward */
- "bar-symbolic", /* awkward */
- "bar-baz-rtl",
- "bar-baz",
- "bar-rtl",
- "bar",
- NULL);
- assert_lookup_order ("bar-baz-symbolic", 16, GTK_TEXT_DIR_RTL, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
- "bar-baz-symbolic-rtl",
- "bar-baz-symbolic",
- "bar-symbolic-rtl",
- "bar-symbolic",
- "bar-baz-symbolic-rtl", /* awkward */
- "bar-baz-symbolic", /* awkward */
- "bar-symbolic-rtl", /* awkward */
- "bar-symbolic", /* awkward */
- "bar-baz-rtl",
- "bar-baz",
- "bar-rtl",
- "bar",
- NULL);
-
- assert_lookup_order ("bar-baz", 16, GTK_TEXT_DIR_LTR, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
- "bar-baz-symbolic-ltr",
- "bar-baz-symbolic",
- "bar-symbolic-ltr",
- "bar-symbolic",
- "bar-baz-symbolic-ltr", /* awkward */
- "bar-baz-symbolic", /* awkward */
- "bar-symbolic-ltr", /* awkward */
- "bar-symbolic", /* awkward */
- "bar-baz-ltr",
- "bar-baz",
- "bar-ltr",
- "bar",
- NULL);
- assert_lookup_order ("bar-baz-symbolic", 16, GTK_TEXT_DIR_LTR, GTK_ICON_LOOKUP_FORCE_SYMBOLIC, TRUE,
- "bar-baz-symbolic-ltr",
- "bar-baz-symbolic",
- "bar-symbolic-ltr",
- "bar-symbolic",
- "bar-baz-symbolic-ltr", /* awkward */
- "bar-baz-symbolic", /* awkward */
- "bar-symbolic-ltr", /* awkward */
- "bar-symbolic", /* awkward */
- "bar-baz-ltr",
- "bar-baz",
- "bar-ltr",
- "bar",
- NULL);
+ /* just a basic boring lookup so we know everything works */
+ assert_icon_lookup ("simple", 16, GTK_TEXT_DIR_NONE, 0, FALSE, "/icons/16x16/simple.png");
}
static void
gtk_test_init (&argc, &argv);
g_test_add_func ("/icontheme/basics", test_basics);
- g_test_add_func ("/icontheme/lookup-order", test_lookup_order);
g_test_add_func ("/icontheme/generic-fallback", test_generic_fallback);
g_test_add_func ("/icontheme/force-symbolic", test_force_symbolic);
g_test_add_func ("/icontheme/force-regular", test_force_regular);
g_test_add_func ("/icontheme/list", test_list);
g_test_add_func ("/icontheme/inherit", test_inherit);
g_test_add_func ("/icontheme/nonsquare-symbolic", test_nonsquare_symbolic);
+ g_test_add_func ("/icontheme/lookup-order", test_lookup_order);
return g_test_run();
}