d/patches: Sort Debian-specific patches to the end of the series
authorSimon McVittie <smcv@debian.org>
Tue, 6 Dec 2022 11:45:14 +0000 (11:45 +0000)
committerSimon McVittie <smcv@debian.org>
Tue, 6 Dec 2022 11:45:14 +0000 (11:45 +0000)
debian/patches/Disable-inscription-markup.ui-reftest.patch [deleted file]
debian/patches/debian/Disable-inscription-markup.ui-reftest.patch [new file with mode: 0644]
debian/patches/debian/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch [new file with mode: 0644]
debian/patches/debian/reftests-Allow-minor-differences-to-be-tolerated.patch [new file with mode: 0644]
debian/patches/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch [deleted file]
debian/patches/reftests-Allow-minor-differences-to-be-tolerated.patch [deleted file]
debian/patches/series

diff --git a/debian/patches/Disable-inscription-markup.ui-reftest.patch b/debian/patches/Disable-inscription-markup.ui-reftest.patch
deleted file mode 100644 (file)
index b035172..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-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()
diff --git a/debian/patches/debian/Disable-inscription-markup.ui-reftest.patch b/debian/patches/debian/Disable-inscription-markup.ui-reftest.patch
new file mode 100644 (file)
index 0000000..b035172
--- /dev/null
@@ -0,0 +1,26 @@
+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()
diff --git a/debian/patches/debian/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch b/debian/patches/debian/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch
new file mode 100644 (file)
index 0000000..c772906
--- /dev/null
@@ -0,0 +1,171 @@
+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
diff --git a/debian/patches/debian/reftests-Allow-minor-differences-to-be-tolerated.patch b/debian/patches/debian/reftests-Allow-minor-differences-to-be-tolerated.patch
new file mode 100644 (file)
index 0000000..f45ae07
--- /dev/null
@@ -0,0 +1,152 @@
+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)
+     {
diff --git a/debian/patches/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch b/debian/patches/reftest_compare_surfaces-Report-how-much-the-images-diffe.patch
deleted file mode 100644 (file)
index c772906..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-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
diff --git a/debian/patches/reftests-Allow-minor-differences-to-be-tolerated.patch b/debian/patches/reftests-Allow-minor-differences-to-be-tolerated.patch
deleted file mode 100644 (file)
index f45ae07..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-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)
-     {
index 7dffe6c74ddf86bdac8fd667b55ada517922c435..0b44154c4e01076d838b690ff825b1f0a6415109 100644 (file)
@@ -14,8 +14,8 @@ gtktext-Claim-gesture-more-selectively.patch
 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