diff options
author | Bastien Nocera <hadess@hadess.net> | 2018-12-11 15:43:59 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2018-12-11 15:43:59 +0000 |
commit | d1d8b5f9065f5d4a1d7ca0a0e298db9f5c5d256a (patch) | |
tree | 819e3d6a080a20f9310f0c88193074a927c57d8c | |
parent | 3c0090b2602eb53c796152b67156d19274af0f5f (diff) | |
parent | 772f4d677da725736ced892f6140bf9eb79980d7 (diff) | |
download | gdk-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.yml | 18 | ||||
-rw-r--r-- | .gitlab/ci/test-msys2.sh | 35 | ||||
-rw-r--r-- | tests/pixbuf-fail.c | 30 | ||||
-rw-r--r-- | tests/pixbuf-reftest.c | 51 | ||||
-rw-r--r-- | tests/pixbuf-threads.c | 3 | ||||
-rw-r--r-- | tests/test-common.c | 10 | ||||
-rw-r--r-- | tests/test-common.h | 1 |
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); |