From 2a7beb75e8afa89e1c983d59135d03d84dd10bc6 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 4 Nov 2024 21:48:14 +0100 Subject: [PATCH] testsuite: Make offload test do actual diffs We have a testutils.c version for that. --- testsuite/gsk/meson.build | 3 ++- testsuite/gsk/offload.c | 44 ++++++++++++--------------------------- 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build index 24130a1fa0..5eb636f1cf 100644 --- a/testsuite/gsk/meson.build +++ b/testsuite/gsk/meson.build @@ -489,7 +489,8 @@ endforeach # offload does not work outside of linux if os_linux - offload = executable('offload', 'offload.c', 'gskrendernodeattach.c', + offload = executable('offload', + [ 'offload.c', 'gskrendernodeattach.c', '../testutils.c' ], dependencies : libgtk_static_dep, c_args: common_cflags + [ '-DGTK_COMPILATION=1' ], ) diff --git a/testsuite/gsk/offload.c b/testsuite/gsk/offload.c index 98a0b782f6..daf725d9d5 100644 --- a/testsuite/gsk/offload.c +++ b/testsuite/gsk/offload.c @@ -29,6 +29,8 @@ #include #include "gskrendernodeattach.h" +#include "../testutils.h" + static char * test_get_sibling_file (const char *node_file, const char *old_ext, @@ -52,26 +54,6 @@ test_get_sibling_file (const char *node_file, return g_string_free (file, FALSE); } -static GBytes * -diff_with_file (const char *file1, - GBytes *input, - GError **error) -{ - char *buffer; - gsize len; - static const char msg[] = "The output is not as expected"; - - g_file_get_contents (file1, &buffer, &len, NULL); - if (strcmp (buffer, (char *) g_bytes_get_data (input, NULL)) == 0) - { - g_free (buffer); - return NULL; - } - - g_free (buffer); - return g_bytes_new_static (msg, strlen (msg) + 1); -} - static void append_error_value (GString *string, GType enum_type, @@ -225,7 +207,7 @@ collect_offload_info (GdkSurface *surface, info->was_offloaded ? "was offloaded, " : ""); } - bytes = g_bytes_new (s->str, s->len + 1); + bytes = g_bytes_new (s->str, s->len); g_string_free (s, TRUE); @@ -364,11 +346,11 @@ parse_node_file (GFile *file, const char *generate) GdkSubsurface *subsurface; GskOffload *offload; GskRenderNode *node, *tmp; - GBytes *offload_state, *diff; + GBytes *offload_state; GError *error = NULL; gboolean result = TRUE; cairo_region_t *clip, *region; - char *path; + char *path, *diff; GskRenderNode *node2; const char *generate_values[] = { "offload", "offload2", "diff", NULL }; @@ -425,20 +407,20 @@ parse_node_file (GFile *file, const char *generate) if (reference_file == NULL) return FALSE; - diff = diff_with_file (reference_file, offload_state, &error); + diff = diff_bytes_with_file (reference_file, offload_state, &error); g_assert_no_error (error); - if (diff && g_bytes_get_size (diff) > 0) + if (diff) { char *basename = g_path_get_basename (reference_file); g_print ("Resulting file doesn't match reference (%s):\n%s\n", basename, - (const char *) g_bytes_get_data (diff, NULL)); + diff); g_free (basename); result = FALSE; } g_clear_pointer (&offload_state, g_bytes_unref); - g_clear_pointer (&diff, g_bytes_unref); + g_clear_pointer (&diff, g_free); g_clear_pointer (&reference_file, g_free); path = test_get_sibling_file (g_file_peek_path (file), ".node", ".node2"); @@ -464,20 +446,20 @@ parse_node_file (GFile *file, const char *generate) if (reference_file == NULL) return FALSE; - diff = diff_with_file (reference_file, offload_state, &error); + diff = diff_bytes_with_file (reference_file, offload_state, &error); g_assert_no_error (error); - if (diff && g_bytes_get_size (diff) > 0) + if (diff) { char *basename = g_path_get_basename (reference_file); g_print ("Resulting file doesn't match reference (%s):\n%s\n", basename, - (const char *) g_bytes_get_data (diff, NULL)); + diff); g_free (basename); result = FALSE; } g_clear_pointer (&offload_state, g_bytes_unref); - g_clear_pointer (&diff, g_bytes_unref); + g_clear_pointer (&diff, g_free); g_clear_pointer (&reference_file, g_free); gsk_render_node_diff (node, node2, &(GskDiffData) { clip, surface });