summaryrefslogtreecommitdiff
path: root/tests/test-common.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-01-25 16:29:34 -0500
committerMatthias Clasen <mclasen@redhat.com>2014-01-25 16:29:34 -0500
commit9fa240c1ad5a815d63d8aa9126954152c2607f2e (patch)
tree3f34f19386c31085686b686461eb13851e26c70c /tests/test-common.c
parent6079c11a442507c5d8b6bd2b2dd384d03769fd95 (diff)
downloadgdk-pixbuf-9fa240c1ad5a815d63d8aa9126954152c2607f2e.tar.gz
Make testsuite robust against disabled formats
Skip tests if their file format is not supported by the available loaders. https://bugzilla.gnome.org/show_bug.cgi?id=722651
Diffstat (limited to 'tests/test-common.c')
-rw-r--r--tests/test-common.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/test-common.c b/tests/test-common.c
new file mode 100644
index 000000000..c7673e395
--- /dev/null
+++ b/tests/test-common.c
@@ -0,0 +1,65 @@
+/* -*- Mode: C; c-basic-offset: 2; -*- */
+/* GdkPixbuf library - test loaders
+ *
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Author: Matthias Clasen
+ */
+
+#include "config.h"
+#include "test-common.h"
+#include "gdk-pixbuf/gdk-pixbuf.h"
+
+#include <string.h>
+
+gboolean
+format_supported (const gchar *filename)
+{
+ const gchar *name = NULL;
+ GSList *formats, *l;
+ gboolean retval;
+ const gchar *names[] = { "png", "jpeg", "bmp", "gif", "ras",
+ "tga", "xpm", "xbm" };
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (names); i++)
+ {
+ if (strstr (filename, names[i]))
+ {
+ name = names[i];
+ break;
+ }
+ }
+ if (name == NULL)
+ return FALSE;
+
+ retval = FALSE;
+ formats = gdk_pixbuf_get_formats ();
+ for (l = formats; l; l = l->next)
+ {
+ GdkPixbufFormat *format = l->data;
+
+ if (g_str_equal (gdk_pixbuf_format_get_name (format), name))
+ {
+ retval = TRUE;
+ break;
+ }
+ }
+ g_slist_free (formats);
+
+ return retval;
+}