summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2018-12-11 15:43:59 +0000
committerBastien Nocera <hadess@hadess.net>2018-12-11 15:43:59 +0000
commitd1d8b5f9065f5d4a1d7ca0a0e298db9f5c5d256a (patch)
tree819e3d6a080a20f9310f0c88193074a927c57d8c
parent3c0090b2602eb53c796152b67156d19274af0f5f (diff)
parent772f4d677da725736ced892f6140bf9eb79980d7 (diff)
downloadgdk-pixbuf-d1d8b5f9065f5d4a1d7ca0a0e298db9f5c5d256a.tar.gz
Merge branch 'ci-msys2' into 'master'
ci: add a msys2 mingw64 job See merge request GNOME/gdk-pixbuf!29
-rw-r--r--.gitlab-ci.yml18
-rw-r--r--.gitlab/ci/test-msys2.sh35
-rw-r--r--tests/pixbuf-fail.c30
-rw-r--r--tests/pixbuf-reftest.c51
-rw-r--r--tests/pixbuf-threads.c3
-rw-r--r--tests/test-common.c10
-rw-r--r--tests/test-common.h1
7 files changed, 130 insertions, 18 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5a29219c8..783793f67 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,9 +14,25 @@ meson-fedora-x86_64:
- bash -x ./.gitlab/ci/test-docker.sh
artifacts:
when: on_failure
- name: "gdk-pixbuf-${CI_COMMIT_REF_NAME}"
+ name: "gdk-pixbuf-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
paths:
- "${CI_PROJECT_DIR}/build_*/meson-logs"
cache:
key: "$CI_JOB_NAME"
<<: *cache-paths
+
+msys2-mingw64:
+ stage: build
+ tags:
+ - win32
+ variables:
+ MSYSTEM: "MINGW64"
+ CHERE_INVOKING: "yes"
+ script:
+ - C:\msys64\usr\bin\pacman --noconfirm -Syyuu
+ - C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab/ci/test-msys2.sh"
+ artifacts:
+ name: "gdk-pixbuf-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
+ when: always
+ paths:
+ - _build/meson-logs
diff --git a/.gitlab/ci/test-msys2.sh b/.gitlab/ci/test-msys2.sh
new file mode 100644
index 000000000..008b7c437
--- /dev/null
+++ b/.gitlab/ci/test-msys2.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+set -e
+
+if [[ "$MSYSTEM" == "MINGW32" ]]; then
+ export MSYS2_ARCH="i686"
+else
+ export MSYS2_ARCH="x86_64"
+fi
+
+pacman --noconfirm -Suy
+
+pacman --noconfirm -S --needed \
+ base-devel \
+ mingw-w64-$MSYS2_ARCH-gobject-introspection \
+ mingw-w64-$MSYS2_ARCH-glib2 \
+ mingw-w64-$MSYS2_ARCH-jasper \
+ mingw-w64-$MSYS2_ARCH-libjpeg-turbo \
+ mingw-w64-$MSYS2_ARCH-libpng \
+ mingw-w64-$MSYS2_ARCH-libtiff \
+ mingw-w64-$MSYS2_ARCH-meson \
+ mingw-w64-$MSYS2_ARCH-toolchain
+
+meson --buildtype debug \
+ -Dx11=false \
+ -Dpng=true \
+ -Djpeg=true \
+ -Dtiff=true \
+ -Djasper=true \
+ _build
+
+cd _build
+ninja
+
+meson test
diff --git a/tests/pixbuf-fail.c b/tests/pixbuf-fail.c
index 322d5f6f2..711ff9018 100644
--- a/tests/pixbuf-fail.c
+++ b/tests/pixbuf-fail.c
@@ -33,7 +33,7 @@ test_fail_size (GFile *file,
GError *error = NULL;
guchar *contents;
gsize i, contents_length;
- char *filename, *content_type, *mime_type;
+ char *filename;
gboolean success;
if (!file_supported (file))
@@ -48,11 +48,27 @@ test_fail_size (GFile *file,
g_assert_no_error (error);
g_assert (success);
- content_type = g_content_type_guess (filename, contents, contents_length, NULL);
- mime_type = g_content_type_get_mime_type (content_type);
- g_assert (mime_type);
-
- loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, &error);
+#ifdef GDK_PIXBUF_USE_GIO_MIME
+ {
+ char *mime_type, *content_type;
+
+ content_type = g_content_type_guess (filename, contents, contents_length, NULL);
+ mime_type = g_content_type_get_mime_type (content_type);
+ g_assert (mime_type);
+ loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, &error);
+ g_free (mime_type);
+ g_free (content_type);
+ }
+#else
+ {
+ char *format;
+
+ success = find_format (filename, &format);
+ g_assert_true (success);
+ loader = gdk_pixbuf_loader_new_with_type (format, &error);
+ g_free (format);
+ }
+#endif
g_assert_no_error (error);
g_assert (loader != NULL);
@@ -74,8 +90,6 @@ test_fail_size (GFile *file,
g_clear_error (&error);
out:
- g_free (mime_type);
- g_free (content_type);
g_free (contents);
g_object_unref (loader);
g_free (filename);
diff --git a/tests/pixbuf-reftest.c b/tests/pixbuf-reftest.c
index fd5414618..ac0bb2d46 100644
--- a/tests/pixbuf-reftest.c
+++ b/tests/pixbuf-reftest.c
@@ -85,6 +85,28 @@ make_ref_file (GFile *file)
result = g_file_new_for_uri (ref_uri);
+#ifdef G_OS_WIN32
+ /* XXX: The .ref.png files are symlinks and on Windows git will create
+ * files containing the symlink target instead of symlinks. */
+ {
+ char *contents;
+ gboolean success;
+
+ success = g_file_load_contents (result, NULL, &contents, NULL, NULL, NULL);
+ if (success)
+ {
+ if (g_str_is_ascii (contents))
+ {
+ GFile *parent = g_file_get_parent (result);
+ g_object_unref (result);
+ result = g_file_get_child (parent, contents);
+ g_object_unref (parent);
+ }
+ g_free (contents);
+ }
+ }
+#endif
+
g_free (ref_uri);
g_free (uri);
@@ -116,7 +138,7 @@ test_reftest (gconstpointer data)
GInputStream *stream;
guchar *contents;
gsize i, contents_length;
- char *filename, *content_type, *mime_type;
+ char *filename;
gboolean success;
file = G_FILE (data);
@@ -141,11 +163,28 @@ test_reftest (gconstpointer data)
g_assert_no_error (error);
g_assert (success);
- content_type = g_content_type_guess (filename, contents, contents_length, NULL);
- mime_type = g_content_type_get_mime_type (content_type);
- g_assert (mime_type);
+#ifdef GDK_PIXBUF_USE_GIO_MIME
+ {
+ char *mime_type, *content_type;
+
+ content_type = g_content_type_guess (filename, contents, contents_length, NULL);
+ mime_type = g_content_type_get_mime_type (content_type);
+ g_assert (mime_type);
+ loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, &error);
+ g_free (mime_type);
+ g_free (content_type);
+ }
+#else
+ {
+ char *format;
+
+ success = find_format (filename, &format);
+ g_assert_true (success);
+ loader = gdk_pixbuf_loader_new_with_type (format, &error);
+ g_free (format);
+ }
+#endif
- loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, &error);
g_assert_no_error (error);
g_assert (loader != NULL);
g_signal_connect (loader, "size-prepared", G_CALLBACK (loader_size_prepared), &loaded);
@@ -169,8 +208,6 @@ test_reftest (gconstpointer data)
g_assert_no_error (error);
g_assert (success);
- g_free (mime_type);
- g_free (content_type);
g_free (contents);
g_object_unref (loaded);
g_object_unref (loader);
diff --git a/tests/pixbuf-threads.c b/tests/pixbuf-threads.c
index 0690acd82..fdcf4389f 100644
--- a/tests/pixbuf-threads.c
+++ b/tests/pixbuf-threads.c
@@ -18,6 +18,7 @@
*/
#include "config.h"
+#include <glib/gstdio.h>
#include "gdk-pixbuf/gdk-pixbuf.h"
#include "test-common.h"
@@ -37,7 +38,7 @@ load_image (gpointer data,
path = g_test_get_filename (G_TEST_DIST, "test-images/randomly-modified", filename, NULL);
g_test_message ("reading %s", path);
- file = fopen (path, "r");
+ file = g_fopen (path, "rb");
g_assert (file != NULL);
while (!feof (file))
diff --git a/tests/test-common.c b/tests/test-common.c
index 2f4f3a411..8ce15dd08 100644
--- a/tests/test-common.c
+++ b/tests/test-common.c
@@ -85,7 +85,7 @@ make_rg (int width, int height)
}
gboolean
-format_supported (const gchar *filename)
+find_format (const gchar *filename, gchar **found_format)
{
GSList *formats, *l;
gboolean retval;
@@ -102,6 +102,8 @@ format_supported (const gchar *filename)
{
if (g_str_has_suffix (filename, extensions[i]))
{
+ if (found_format != NULL)
+ *found_format = gdk_pixbuf_format_get_name (format);
retval = TRUE;
break;
}
@@ -117,6 +119,12 @@ format_supported (const gchar *filename)
}
gboolean
+format_supported (const gchar *filename)
+{
+ return find_format(filename, NULL);
+}
+
+gboolean
file_supported (GFile *file)
{
char *uri;
diff --git a/tests/test-common.h b/tests/test-common.h
index 8e7f676b0..dbe07e9e2 100644
--- a/tests/test-common.h
+++ b/tests/test-common.h
@@ -31,6 +31,7 @@ typedef gboolean (* AddTestFunc) (GFile *file);
gboolean format_supported (const gchar *filename);
gboolean file_supported (GFile *file);
+gboolean find_format (const gchar *filename, gchar **found_format);
gboolean skip_if_insufficient_memory (GError **err);
gboolean pixdata_equal (GdkPixbuf *test, GdkPixbuf *ref, GError **error);
GdkPixbuf *make_checkerboard (int width, int height);