+++ /dev/null
-From: Simon McVittie <smcv@debian.org>
-Date: Fri, 12 Aug 2022 10:44:17 +0100
-Subject: Disable inscription-markup.ui reftest
-
-It's rendered 1px to the left of where it should be, which is not a
-serious problem for practical use of GTK, but is a test failure.
-
-Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/5099
-Forwarded: not-needed, workaround
----
- testsuite/reftests/meson.build | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build
-index 329348d..8edf55d 100644
---- a/testsuite/reftests/meson.build
-+++ b/testsuite/reftests/meson.build
-@@ -608,6 +608,8 @@ flaky = [
- # to be left enabled. Remove it until somebody figures out
- # what is going on there.
- 'treeview-headers-hidden.ui',
-+ # https://gitlab.gnome.org/GNOME/gtk/-/issues/5099
-+ 'inscription-markup.ui',
- ]
-
- reftest_env = environment()
--- /dev/null
+From: Simon McVittie <smcv@debian.org>
+Date: Fri, 12 Aug 2022 10:44:17 +0100
+Subject: Disable inscription-markup.ui reftest
+
+It's rendered 1px to the left of where it should be, which is not a
+serious problem for practical use of GTK, but is a test failure.
+
+Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/5099
+Forwarded: not-needed, workaround
+---
+ testsuite/reftests/meson.build | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build
+index 329348d..8edf55d 100644
+--- a/testsuite/reftests/meson.build
++++ b/testsuite/reftests/meson.build
+@@ -608,6 +608,8 @@ flaky = [
+ # to be left enabled. Remove it until somebody figures out
+ # what is going on there.
+ 'treeview-headers-hidden.ui',
++ # https://gitlab.gnome.org/GNOME/gtk/-/issues/5099
++ 'inscription-markup.ui',
+ ]
+
+ reftest_env = environment()
--- /dev/null
+From: Simon McVittie <smcv@debian.org>
+Date: Sat, 13 Feb 2021 18:26:24 +0000
+Subject: reftest_compare_surfaces: Report how much the images differ
+
+In unattended/non-interactive/autobuilder environments where the images
+are not trivially accessible, this provides a way to distinguish between
+totally different rendering and more subtle issues.
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3195
+Applied-upstream: no, upstream want reftests to be a strict pass/fail with identical results required
+---
+ testsuite/gsk/compare-render.c | 9 ++++++++-
+ testsuite/reftests/gtk-reftest.c | 9 ++++++++-
+ testsuite/reftests/reftest-compare.c | 28 +++++++++++++++++++++++++---
+ testsuite/reftests/reftest-compare.h | 5 ++++-
+ 4 files changed, 45 insertions(+), 6 deletions(-)
+
+diff --git a/testsuite/gsk/compare-render.c b/testsuite/gsk/compare-render.c
+index 919957e..7145363 100644
+--- a/testsuite/gsk/compare-render.c
++++ b/testsuite/gsk/compare-render.c
+@@ -227,12 +227,19 @@ main (int argc, char **argv)
+ else
+ {
+ GdkTexture *diff_texture;
++ guint max_diff = 0;
++ guint pixels_changed = 0;
++ guint pixels = 0;
+
+ /* Now compare the two */
+- diff_texture = reftest_compare_textures (rendered_texture, reference_texture);
++ diff_texture = reftest_compare_textures (rendered_texture, reference_texture,
++ &max_diff, &pixels_changed, &pixels);
+
+ if (diff_texture)
+ {
++ g_print ("%u (out of %u) pixels differ from reference by up to %u levels\n",
++ pixels_changed, pixels, max_diff);
++
+ save_image (diff_texture, node_file, ".diff.png");
+ g_object_unref (diff_texture);
+ success = FALSE;
+diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c
+index a057a2e..78cd4dc 100644
+--- a/testsuite/reftests/gtk-reftest.c
++++ b/testsuite/reftests/gtk-reftest.c
+@@ -347,6 +347,9 @@ test_ui_file (GFile *file)
+ char *ui_file, *reference_file;
+ GdkTexture *ui_image, *reference_image, *diff_image;
+ GtkStyleProvider *provider;
++ guint max_diff = 0;
++ guint pixels_changed = 0;
++ guint pixels = 0;
+
+ ui_file = g_file_get_path (file);
+
+@@ -378,12 +381,16 @@ test_ui_file (GFile *file)
+ if (reference_image == NULL)
+ reference_image = gdk_memory_texture_new (1, 1, GDK_MEMORY_DEFAULT, g_bytes_new ((guchar[4]) {0, 0, 0, 0}, 4), 4);
+
+- diff_image = reftest_compare_textures (ui_image, reference_image);
++ diff_image = reftest_compare_textures (ui_image, reference_image,
++ &max_diff, &pixels_changed, &pixels);
+
+ save_image (ui_image, ui_file, ".out.png");
+ save_image (reference_image, ui_file, ".ref.png");
++
+ if (diff_image)
+ {
++ g_test_message ("%u (out of %u) pixels differ from reference by up to %u levels",
++ pixels_changed, pixels, max_diff);
+ save_node (g_object_get_data (G_OBJECT (ui_image), "source-render-node"), ui_file, ".out.node");
+ save_node (g_object_get_data (G_OBJECT (reference_image), "source-render-node"), ui_file, ".ref.node");
+ save_image (diff_image, ui_file, ".diff.png");
+diff --git a/testsuite/reftests/reftest-compare.c b/testsuite/reftests/reftest-compare.c
+index bb6c6eb..202fcf5 100644
+--- a/testsuite/reftests/reftest-compare.c
++++ b/testsuite/reftests/reftest-compare.c
+@@ -35,12 +35,16 @@ buffer_diff_core (const guchar *buf_a,
+ const guchar *buf_b,
+ int stride_b,
+ int width,
+- int height)
++ int height,
++ guint *max_diff_out,
++ guint *pixels_changed_out)
+ {
+ int x, y;
+ guchar *buf_diff = NULL;
+ int stride_diff = 0;
+ GdkTexture *diff = NULL;
++ guint max_diff = 0;
++ guint pixels_changed = 0;
+
+ for (y = 0; y < height; y++)
+ {
+@@ -84,6 +88,10 @@ buffer_diff_core (const guchar *buf_a,
+ guint channel_diff;
+
+ channel_diff = ABS (value_a - value_b);
++
++ if (channel_diff > max_diff)
++ max_diff = channel_diff;
++
+ channel_diff *= 4; /* emphasize */
+ if (channel_diff)
+ channel_diff += 128; /* make sure it's visible */
+@@ -92,6 +100,8 @@ buffer_diff_core (const guchar *buf_a,
+ diff_pixel |= channel_diff << (channel * 8);
+ }
+
++ pixels_changed++;
++
+ if ((diff_pixel & 0x00ffffff) == 0)
+ {
+ /* alpha only difference, convert to luminance */
+@@ -105,12 +115,21 @@ buffer_diff_core (const guchar *buf_a,
+ }
+ }
+
++ if (max_diff_out != NULL)
++ *max_diff_out = max_diff;
++
++ if (pixels_changed_out != NULL)
++ *pixels_changed_out = pixels_changed;
++
+ return diff;
+ }
+
+ GdkTexture *
+ reftest_compare_textures (GdkTexture *texture1,
+- GdkTexture *texture2)
++ GdkTexture *texture2,
++ guint *max_diff_out,
++ guint *pixels_changed_out,
++ guint *pixels_out)
+ {
+ int w, h;
+ guchar *data1, *data2;
+@@ -126,10 +145,13 @@ reftest_compare_textures (GdkTexture *texture1,
+
+ diff = buffer_diff_core (data1, w * 4,
+ data2, w * 4,
+- w, h);
++ w, h, max_diff_out, pixels_changed_out);
+
+ g_free (data1);
+ g_free (data2);
+
++ if (pixels_out != NULL)
++ *pixels_out = w * h;
++
+ return diff;
+ }
+diff --git a/testsuite/reftests/reftest-compare.h b/testsuite/reftests/reftest-compare.h
+index d5e02a1..b71636e 100644
+--- a/testsuite/reftests/reftest-compare.h
++++ b/testsuite/reftests/reftest-compare.h
+@@ -24,7 +24,10 @@ G_BEGIN_DECLS
+
+ G_MODULE_EXPORT
+ GdkTexture * reftest_compare_textures (GdkTexture *texture1,
+- GdkTexture *texture2);
++ GdkTexture *texture2,
++ guint *max_diff_out,
++ guint *pixels_changed_out,
++ guint *pixels_out);
+
+ G_END_DECLS
+
--- /dev/null
+From: Simon McVittie <smcv@debian.org>
+Date: Sat, 13 Feb 2021 16:19:10 +0000
+Subject: reftests: Allow minor differences to be tolerated
+
+Based on an earlier patch by Michael Biebl, as used in Debian's GTK 3
+packaging, with additional inspiration from librsvg's reftests.
+
+Each .ui or .node reftest can have an accompanying .keyfile file
+like this:
+
+ [reftest]
+ tolerated-diff-level=20
+ tolerated-diff-pixels=1000
+
+If the image differs, but the number of pixels that differ is no more
+than tolerated-diff-pixels and the differences are no more than
+tolerated-diff-level, then we treat it as a success with warnings, save
+the .diff.png for analysis, and use g_test_incomplete() to record the
+test-case as "TODO".
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3195
+Applied-upstream: no, upstream want reftests to be a strict pass/fail with identical results required
+---
+ testsuite/gsk/compare-render.c | 31 ++++++++++++++++++++++++++++++-
+ testsuite/reftests/gtk-reftest.c | 32 +++++++++++++++++++++++++++++++-
+ testsuite/reftests/image-compare.c | 2 +-
+ 3 files changed, 62 insertions(+), 3 deletions(-)
+
+diff --git a/testsuite/gsk/compare-render.c b/testsuite/gsk/compare-render.c
+index 7145363..2d5fdf9 100644
+--- a/testsuite/gsk/compare-render.c
++++ b/testsuite/gsk/compare-render.c
+@@ -98,6 +98,12 @@ get_output_file (const char *file,
+ return result;
+ }
+
++static char *
++get_test_keyfile (const char *node_file)
++{
++ return file_replace_extension (node_file, ".node", ".keyfile");
++}
++
+ static void
+ save_image (GdkTexture *texture,
+ const char *test_name,
+@@ -237,12 +243,35 @@ main (int argc, char **argv)
+
+ if (diff_texture)
+ {
++ char *keyfile_path = get_test_keyfile (node_file);
++ GKeyFile *keyfile = g_key_file_new ();
++ guint64 tolerated_diff = 0;
++ guint64 tolerated_pixels = 0;
++
++ if (keyfile_path != NULL && g_file_test (keyfile_path, G_FILE_TEST_EXISTS))
++ {
++ GError *error = NULL;
++ g_key_file_load_from_file (keyfile, keyfile_path, G_KEY_FILE_NONE, &error);
++ g_assert_no_error (error);
++ tolerated_diff = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-level", NULL);
++ g_print ("Maximum difference tolerated: %" G_GUINT64_FORMAT " levels\n", tolerated_diff);
++ tolerated_pixels = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-pixels", NULL);
++ g_print ("Different pixels tolerated: %" G_GUINT64_FORMAT "\n", tolerated_pixels);
++ }
++
+ g_print ("%u (out of %u) pixels differ from reference by up to %u levels\n",
+ pixels_changed, pixels, max_diff);
+
+ save_image (diff_texture, node_file, ".diff.png");
+ g_object_unref (diff_texture);
+- success = FALSE;
++
++ if (max_diff <= tolerated_diff && pixels_changed <= tolerated_pixels)
++ g_print ("not right, but close enough?\n");
++ else
++ success = FALSE;
++
++ g_key_file_unref (keyfile);
++ g_free (keyfile_path);
+ }
+ }
+
+diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c
+index 78cd4dc..8062854 100644
+--- a/testsuite/reftests/gtk-reftest.c
++++ b/testsuite/reftests/gtk-reftest.c
+@@ -308,6 +308,12 @@ save_image (GdkTexture *texture,
+ g_free (filename);
+ }
+
++static char *
++get_test_keyfile (const char *ui_file)
++{
++ return get_test_file (ui_file, ".keyfile", TRUE);
++}
++
+ static void
+ save_node (GskRenderNode *node,
+ const char *test_name,
+@@ -389,13 +395,37 @@ test_ui_file (GFile *file)
+
+ if (diff_image)
+ {
++ char *keyfile_path = get_test_keyfile (ui_file);
++ GKeyFile *keyfile = g_key_file_new ();
++ guint64 tolerated_diff = 0;
++ guint64 tolerated_pixels = 0;
++
++ if (keyfile_path != NULL)
++ {
++ GError *error = NULL;
++ g_key_file_load_from_file (keyfile, keyfile_path, G_KEY_FILE_NONE, &error);
++ g_assert_no_error (error);
++ tolerated_diff = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-level", NULL);
++ g_test_message ("Maximum difference tolerated: %" G_GUINT64_FORMAT " levels", tolerated_diff);
++ tolerated_pixels = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-pixels", NULL);
++ g_test_message ("Different pixels tolerated: %" G_GUINT64_FORMAT, tolerated_pixels);
++ }
++
+ g_test_message ("%u (out of %u) pixels differ from reference by up to %u levels",
+ pixels_changed, pixels, max_diff);
++
+ save_node (g_object_get_data (G_OBJECT (ui_image), "source-render-node"), ui_file, ".out.node");
+ save_node (g_object_get_data (G_OBJECT (reference_image), "source-render-node"), ui_file, ".ref.node");
+ save_image (diff_image, ui_file, ".diff.png");
+ g_object_unref (diff_image);
+- g_test_fail ();
++
++ if (max_diff <= tolerated_diff && pixels_changed <= tolerated_pixels)
++ g_test_incomplete ("not right, but close enough?");
++ else
++ g_test_fail ();
++
++ g_key_file_unref (keyfile);
++ g_free (keyfile_path);
+ }
+
+ remove_extra_css (provider);
+diff --git a/testsuite/reftests/image-compare.c b/testsuite/reftests/image-compare.c
+index dd9c26c..e68a161 100644
+--- a/testsuite/reftests/image-compare.c
++++ b/testsuite/reftests/image-compare.c
+@@ -51,7 +51,7 @@ main (int argc, char **argv)
+ exit (1);
+ }
+
+- diff = reftest_compare_textures (image1, image2);
++ diff = reftest_compare_textures (image1, image2, NULL, NULL, NULL);
+
+ if (opt_filename && diff)
+ {
+++ /dev/null
-From: Simon McVittie <smcv@debian.org>
-Date: Sat, 13 Feb 2021 18:26:24 +0000
-Subject: reftest_compare_surfaces: Report how much the images differ
-
-In unattended/non-interactive/autobuilder environments where the images
-are not trivially accessible, this provides a way to distinguish between
-totally different rendering and more subtle issues.
-
-Signed-off-by: Simon McVittie <smcv@debian.org>
-Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3195
-Applied-upstream: no, upstream want reftests to be a strict pass/fail with identical results required
----
- testsuite/gsk/compare-render.c | 9 ++++++++-
- testsuite/reftests/gtk-reftest.c | 9 ++++++++-
- testsuite/reftests/reftest-compare.c | 28 +++++++++++++++++++++++++---
- testsuite/reftests/reftest-compare.h | 5 ++++-
- 4 files changed, 45 insertions(+), 6 deletions(-)
-
-diff --git a/testsuite/gsk/compare-render.c b/testsuite/gsk/compare-render.c
-index 919957e..7145363 100644
---- a/testsuite/gsk/compare-render.c
-+++ b/testsuite/gsk/compare-render.c
-@@ -227,12 +227,19 @@ main (int argc, char **argv)
- else
- {
- GdkTexture *diff_texture;
-+ guint max_diff = 0;
-+ guint pixels_changed = 0;
-+ guint pixels = 0;
-
- /* Now compare the two */
-- diff_texture = reftest_compare_textures (rendered_texture, reference_texture);
-+ diff_texture = reftest_compare_textures (rendered_texture, reference_texture,
-+ &max_diff, &pixels_changed, &pixels);
-
- if (diff_texture)
- {
-+ g_print ("%u (out of %u) pixels differ from reference by up to %u levels\n",
-+ pixels_changed, pixels, max_diff);
-+
- save_image (diff_texture, node_file, ".diff.png");
- g_object_unref (diff_texture);
- success = FALSE;
-diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c
-index a057a2e..78cd4dc 100644
---- a/testsuite/reftests/gtk-reftest.c
-+++ b/testsuite/reftests/gtk-reftest.c
-@@ -347,6 +347,9 @@ test_ui_file (GFile *file)
- char *ui_file, *reference_file;
- GdkTexture *ui_image, *reference_image, *diff_image;
- GtkStyleProvider *provider;
-+ guint max_diff = 0;
-+ guint pixels_changed = 0;
-+ guint pixels = 0;
-
- ui_file = g_file_get_path (file);
-
-@@ -378,12 +381,16 @@ test_ui_file (GFile *file)
- if (reference_image == NULL)
- reference_image = gdk_memory_texture_new (1, 1, GDK_MEMORY_DEFAULT, g_bytes_new ((guchar[4]) {0, 0, 0, 0}, 4), 4);
-
-- diff_image = reftest_compare_textures (ui_image, reference_image);
-+ diff_image = reftest_compare_textures (ui_image, reference_image,
-+ &max_diff, &pixels_changed, &pixels);
-
- save_image (ui_image, ui_file, ".out.png");
- save_image (reference_image, ui_file, ".ref.png");
-+
- if (diff_image)
- {
-+ g_test_message ("%u (out of %u) pixels differ from reference by up to %u levels",
-+ pixels_changed, pixels, max_diff);
- save_node (g_object_get_data (G_OBJECT (ui_image), "source-render-node"), ui_file, ".out.node");
- save_node (g_object_get_data (G_OBJECT (reference_image), "source-render-node"), ui_file, ".ref.node");
- save_image (diff_image, ui_file, ".diff.png");
-diff --git a/testsuite/reftests/reftest-compare.c b/testsuite/reftests/reftest-compare.c
-index bb6c6eb..202fcf5 100644
---- a/testsuite/reftests/reftest-compare.c
-+++ b/testsuite/reftests/reftest-compare.c
-@@ -35,12 +35,16 @@ buffer_diff_core (const guchar *buf_a,
- const guchar *buf_b,
- int stride_b,
- int width,
-- int height)
-+ int height,
-+ guint *max_diff_out,
-+ guint *pixels_changed_out)
- {
- int x, y;
- guchar *buf_diff = NULL;
- int stride_diff = 0;
- GdkTexture *diff = NULL;
-+ guint max_diff = 0;
-+ guint pixels_changed = 0;
-
- for (y = 0; y < height; y++)
- {
-@@ -84,6 +88,10 @@ buffer_diff_core (const guchar *buf_a,
- guint channel_diff;
-
- channel_diff = ABS (value_a - value_b);
-+
-+ if (channel_diff > max_diff)
-+ max_diff = channel_diff;
-+
- channel_diff *= 4; /* emphasize */
- if (channel_diff)
- channel_diff += 128; /* make sure it's visible */
-@@ -92,6 +100,8 @@ buffer_diff_core (const guchar *buf_a,
- diff_pixel |= channel_diff << (channel * 8);
- }
-
-+ pixels_changed++;
-+
- if ((diff_pixel & 0x00ffffff) == 0)
- {
- /* alpha only difference, convert to luminance */
-@@ -105,12 +115,21 @@ buffer_diff_core (const guchar *buf_a,
- }
- }
-
-+ if (max_diff_out != NULL)
-+ *max_diff_out = max_diff;
-+
-+ if (pixels_changed_out != NULL)
-+ *pixels_changed_out = pixels_changed;
-+
- return diff;
- }
-
- GdkTexture *
- reftest_compare_textures (GdkTexture *texture1,
-- GdkTexture *texture2)
-+ GdkTexture *texture2,
-+ guint *max_diff_out,
-+ guint *pixels_changed_out,
-+ guint *pixels_out)
- {
- int w, h;
- guchar *data1, *data2;
-@@ -126,10 +145,13 @@ reftest_compare_textures (GdkTexture *texture1,
-
- diff = buffer_diff_core (data1, w * 4,
- data2, w * 4,
-- w, h);
-+ w, h, max_diff_out, pixels_changed_out);
-
- g_free (data1);
- g_free (data2);
-
-+ if (pixels_out != NULL)
-+ *pixels_out = w * h;
-+
- return diff;
- }
-diff --git a/testsuite/reftests/reftest-compare.h b/testsuite/reftests/reftest-compare.h
-index d5e02a1..b71636e 100644
---- a/testsuite/reftests/reftest-compare.h
-+++ b/testsuite/reftests/reftest-compare.h
-@@ -24,7 +24,10 @@ G_BEGIN_DECLS
-
- G_MODULE_EXPORT
- GdkTexture * reftest_compare_textures (GdkTexture *texture1,
-- GdkTexture *texture2);
-+ GdkTexture *texture2,
-+ guint *max_diff_out,
-+ guint *pixels_changed_out,
-+ guint *pixels_out);
-
- G_END_DECLS
-
+++ /dev/null
-From: Simon McVittie <smcv@debian.org>
-Date: Sat, 13 Feb 2021 16:19:10 +0000
-Subject: reftests: Allow minor differences to be tolerated
-
-Based on an earlier patch by Michael Biebl, as used in Debian's GTK 3
-packaging, with additional inspiration from librsvg's reftests.
-
-Each .ui or .node reftest can have an accompanying .keyfile file
-like this:
-
- [reftest]
- tolerated-diff-level=20
- tolerated-diff-pixels=1000
-
-If the image differs, but the number of pixels that differ is no more
-than tolerated-diff-pixels and the differences are no more than
-tolerated-diff-level, then we treat it as a success with warnings, save
-the .diff.png for analysis, and use g_test_incomplete() to record the
-test-case as "TODO".
-
-Signed-off-by: Simon McVittie <smcv@debian.org>
-Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3195
-Applied-upstream: no, upstream want reftests to be a strict pass/fail with identical results required
----
- testsuite/gsk/compare-render.c | 31 ++++++++++++++++++++++++++++++-
- testsuite/reftests/gtk-reftest.c | 32 +++++++++++++++++++++++++++++++-
- testsuite/reftests/image-compare.c | 2 +-
- 3 files changed, 62 insertions(+), 3 deletions(-)
-
-diff --git a/testsuite/gsk/compare-render.c b/testsuite/gsk/compare-render.c
-index 7145363..2d5fdf9 100644
---- a/testsuite/gsk/compare-render.c
-+++ b/testsuite/gsk/compare-render.c
-@@ -98,6 +98,12 @@ get_output_file (const char *file,
- return result;
- }
-
-+static char *
-+get_test_keyfile (const char *node_file)
-+{
-+ return file_replace_extension (node_file, ".node", ".keyfile");
-+}
-+
- static void
- save_image (GdkTexture *texture,
- const char *test_name,
-@@ -237,12 +243,35 @@ main (int argc, char **argv)
-
- if (diff_texture)
- {
-+ char *keyfile_path = get_test_keyfile (node_file);
-+ GKeyFile *keyfile = g_key_file_new ();
-+ guint64 tolerated_diff = 0;
-+ guint64 tolerated_pixels = 0;
-+
-+ if (keyfile_path != NULL && g_file_test (keyfile_path, G_FILE_TEST_EXISTS))
-+ {
-+ GError *error = NULL;
-+ g_key_file_load_from_file (keyfile, keyfile_path, G_KEY_FILE_NONE, &error);
-+ g_assert_no_error (error);
-+ tolerated_diff = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-level", NULL);
-+ g_print ("Maximum difference tolerated: %" G_GUINT64_FORMAT " levels\n", tolerated_diff);
-+ tolerated_pixels = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-pixels", NULL);
-+ g_print ("Different pixels tolerated: %" G_GUINT64_FORMAT "\n", tolerated_pixels);
-+ }
-+
- g_print ("%u (out of %u) pixels differ from reference by up to %u levels\n",
- pixels_changed, pixels, max_diff);
-
- save_image (diff_texture, node_file, ".diff.png");
- g_object_unref (diff_texture);
-- success = FALSE;
-+
-+ if (max_diff <= tolerated_diff && pixels_changed <= tolerated_pixels)
-+ g_print ("not right, but close enough?\n");
-+ else
-+ success = FALSE;
-+
-+ g_key_file_unref (keyfile);
-+ g_free (keyfile_path);
- }
- }
-
-diff --git a/testsuite/reftests/gtk-reftest.c b/testsuite/reftests/gtk-reftest.c
-index 78cd4dc..8062854 100644
---- a/testsuite/reftests/gtk-reftest.c
-+++ b/testsuite/reftests/gtk-reftest.c
-@@ -308,6 +308,12 @@ save_image (GdkTexture *texture,
- g_free (filename);
- }
-
-+static char *
-+get_test_keyfile (const char *ui_file)
-+{
-+ return get_test_file (ui_file, ".keyfile", TRUE);
-+}
-+
- static void
- save_node (GskRenderNode *node,
- const char *test_name,
-@@ -389,13 +395,37 @@ test_ui_file (GFile *file)
-
- if (diff_image)
- {
-+ char *keyfile_path = get_test_keyfile (ui_file);
-+ GKeyFile *keyfile = g_key_file_new ();
-+ guint64 tolerated_diff = 0;
-+ guint64 tolerated_pixels = 0;
-+
-+ if (keyfile_path != NULL)
-+ {
-+ GError *error = NULL;
-+ g_key_file_load_from_file (keyfile, keyfile_path, G_KEY_FILE_NONE, &error);
-+ g_assert_no_error (error);
-+ tolerated_diff = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-level", NULL);
-+ g_test_message ("Maximum difference tolerated: %" G_GUINT64_FORMAT " levels", tolerated_diff);
-+ tolerated_pixels = g_key_file_get_uint64 (keyfile, "reftest", "tolerated-diff-pixels", NULL);
-+ g_test_message ("Different pixels tolerated: %" G_GUINT64_FORMAT, tolerated_pixels);
-+ }
-+
- g_test_message ("%u (out of %u) pixels differ from reference by up to %u levels",
- pixels_changed, pixels, max_diff);
-+
- save_node (g_object_get_data (G_OBJECT (ui_image), "source-render-node"), ui_file, ".out.node");
- save_node (g_object_get_data (G_OBJECT (reference_image), "source-render-node"), ui_file, ".ref.node");
- save_image (diff_image, ui_file, ".diff.png");
- g_object_unref (diff_image);
-- g_test_fail ();
-+
-+ if (max_diff <= tolerated_diff && pixels_changed <= tolerated_pixels)
-+ g_test_incomplete ("not right, but close enough?");
-+ else
-+ g_test_fail ();
-+
-+ g_key_file_unref (keyfile);
-+ g_free (keyfile_path);
- }
-
- remove_extra_css (provider);
-diff --git a/testsuite/reftests/image-compare.c b/testsuite/reftests/image-compare.c
-index dd9c26c..e68a161 100644
---- a/testsuite/reftests/image-compare.c
-+++ b/testsuite/reftests/image-compare.c
-@@ -51,7 +51,7 @@ main (int argc, char **argv)
- exit (1);
- }
-
-- diff = reftest_compare_textures (image1, image2);
-+ diff = reftest_compare_textures (image1, image2, NULL, NULL, NULL);
-
- if (opt_filename && diff)
- {
gdksurface-Do-not-consider-GDK_TOUCH_END-CANCEL-as-popup-.patch
testsuite-Use-separate-setups-for-unstable-tests-instead-.patch
testsuite-Don-t-create-.test-files-for-flaky-or-failing-t.patch
-reftest_compare_surfaces-Report-how-much-the-images-diffe.patch
-reftests-Allow-minor-differences-to-be-tolerated.patch
-Disable-inscription-markup.ui-reftest.patch
-debian/Disable-clipboard-test.patch
node-editor-Save-test-data-relative-to-current-working-di.patch
+debian/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch
+debian/reftests-Allow-minor-differences-to-be-tolerated.patch
+debian/Disable-inscription-markup.ui-reftest.patch
+debian/Disable-clipboard-test.patch