1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

glib-2.0: Update ptest fix to upstream backport

Update the ptest fix to match the one accepted upstream.

(From OE-Core rev: 82910dd43889e9ac50f7dba9437e3304c52eb1c3)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2023-05-30 15:42:44 +01:00
parent 01472f512f
commit 0869a82d19
3 changed files with 108 additions and 167 deletions
@@ -0,0 +1,107 @@
From f47503cc5ae10de6dee319ba6cff257eddabf33e Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Tue, 30 May 2023 11:52:38 +0100
Subject: [PATCH] gio/tests/portal-support: Fix snap test ordering race
When the gnome test runner executes the tests, the test appear to execute in disk
order. This means it sometimes works and sometimes we see breakage in portal-support-snap
and portal-support-snap-classic.
The issue is that some tests create config files but some don't. If they run
in the wrong order, tests see config files they shouldn't and break.
Fix this by deleting the files after each test run, properly cleaning up after
themselves. The cleanup code is based upon gtestutils.c:rm_rf().
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/c63cf19d9a8a6ae315a7f9a3fe4ea60c8cf5dece]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
gio/tests/portal-support-snap-classic.c | 3 +++
gio/tests/portal-support-snap.c | 3 +++
gio/tests/portal-support-utils.c | 27 +++++++++++++++++++++++++
gio/tests/portal-support-utils.h | 2 ++
4 files changed, 35 insertions(+)
diff --git a/gio/tests/portal-support-snap-classic.c b/gio/tests/portal-support-snap-classic.c
index 8c0ed90c2..5b67865e7 100644
--- a/gio/tests/portal-support-snap-classic.c
+++ b/gio/tests/portal-support-snap-classic.c
@@ -66,6 +66,9 @@ tests_teardown (SetupData *setup_data,
else
g_unsetenv ("SNAP");
+ cleanup_snapfiles (setup_data->snap_path);
+ cleanup_snapfiles (setup_data->bin_path);
+
g_clear_pointer (&setup_data->old_path, g_free);
g_clear_pointer (&setup_data->old_snap, g_free);
}
diff --git a/gio/tests/portal-support-snap.c b/gio/tests/portal-support-snap.c
index 7dd14d82f..cd904678f 100644
--- a/gio/tests/portal-support-snap.c
+++ b/gio/tests/portal-support-snap.c
@@ -67,6 +67,9 @@ tests_teardown (SetupData *setup_data,
else
g_unsetenv ("SNAP");
+ cleanup_snapfiles (setup_data->snap_path);
+ cleanup_snapfiles (setup_data->bin_path);
+
g_clear_pointer (&setup_data->old_path, g_free);
g_clear_pointer (&setup_data->old_snap, g_free);
}
diff --git a/gio/tests/portal-support-utils.c b/gio/tests/portal-support-utils.c
index ae7073a3a..b7ee22630 100644
--- a/gio/tests/portal-support-utils.c
+++ b/gio/tests/portal-support-utils.c
@@ -26,6 +26,33 @@
#include <glib.h>
#include <glib/gstdio.h>
+
+void
+cleanup_snapfiles (const gchar *path)
+{
+ GDir *dir = NULL;
+ const gchar *entry;
+
+ dir = g_dir_open (path, 0, NULL);
+ if (dir == NULL)
+ {
+ /* Assume its a file. Ignore failure. */
+ (void) g_remove (path);
+ return;
+ }
+
+ while ((entry = g_dir_read_name (dir)) != NULL)
+ {
+ gchar *sub_path = g_build_filename (path, entry, NULL);
+ cleanup_snapfiles (sub_path);
+ g_free (sub_path);
+ }
+
+ g_dir_close (dir);
+
+ g_rmdir (path);
+}
+
void
create_fake_snapctl (const char *path,
const char *supported_op)
diff --git a/gio/tests/portal-support-utils.h b/gio/tests/portal-support-utils.h
index 40c035b43..defbdcd4e 100644
--- a/gio/tests/portal-support-utils.h
+++ b/gio/tests/portal-support-utils.h
@@ -23,6 +23,8 @@
#include <glib.h>
+void cleanup_snapfiles (const gchar *path);
+
void create_fake_snap_yaml (const char *snap_path,
gboolean is_classic);
--
2.39.2
@@ -1,166 +0,0 @@
gio/tests/portal: Fix test ordering race
When the gnome test runner executes the tests, the test appear to execute in disk
order. This means it sometimes works and we sometimes see breakage in portal-support-snap
and portal-support-snap-classic.
The issue is that some tests create config files but some don't. If they run
in the wrong order, tests see config files they shouldn't and break.
Fix this by deleting the files after each test run, properly cleaning up after
themselves. There are probably better ways to handle this but this patch should
at least let us check this is the issue.
I've tried to report upstream but their issue tracker account creation is struggling
and I can't get my account to work.
Upstream-Status: Pending
Index: glib-2.76.2/gio/tests/portal-support-snap-classic.c
===================================================================
--- glib-2.76.2.orig/gio/tests/portal-support-snap-classic.c
+++ glib-2.76.2/gio/tests/portal-support-snap-classic.c
@@ -89,6 +89,9 @@ test_portal_support_snap_none (SetupData
g_assert_false (glib_should_use_portal ());
g_assert_true (glib_network_available_in_sandbox ());
g_assert_true (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
static void
@@ -101,6 +104,9 @@ test_portal_support_snap_all (SetupData
g_assert_false (glib_should_use_portal ());
g_assert_true (glib_network_available_in_sandbox ());
g_assert_true (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
int
Index: glib-2.76.2/gio/tests/portal-support-snap.c
===================================================================
--- glib-2.76.2.orig/gio/tests/portal-support-snap.c
+++ glib-2.76.2/gio/tests/portal-support-snap.c
@@ -80,6 +80,8 @@ test_portal_support_snap_no_snapctl (Set
g_assert_false (glib_should_use_portal ());
g_assert_false (glib_network_available_in_sandbox ());
g_assert_false (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
}
static void
@@ -92,6 +94,9 @@ test_portal_support_snap_none (SetupData
g_assert_false (glib_should_use_portal ());
g_assert_false (glib_network_available_in_sandbox ());
g_assert_false (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
static void
@@ -104,6 +109,9 @@ test_portal_support_snap_all (SetupData
g_assert_true (glib_should_use_portal ());
g_assert_true (glib_network_available_in_sandbox ());
g_assert_true (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
static void
@@ -116,6 +124,9 @@ test_portal_support_snap_desktop_only (S
g_assert_true (glib_should_use_portal ());
g_assert_true (glib_network_available_in_sandbox ());
g_assert_false (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
static void
@@ -128,6 +139,9 @@ test_portal_support_snap_network_only (S
g_assert_false (glib_should_use_portal ());
g_assert_true (glib_network_available_in_sandbox ());
g_assert_false (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
static void
@@ -140,6 +154,9 @@ test_portal_support_snap_gsettings_only
g_assert_false (glib_should_use_portal ());
g_assert_false (glib_network_available_in_sandbox ());
g_assert_true (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
static void
@@ -182,6 +199,9 @@ test_portal_support_snap_updates_dynamic
g_assert_false (glib_should_use_portal ());
g_assert_false (glib_network_available_in_sandbox ());
g_assert_false (glib_has_dconf_access_in_sandbox ());
+
+ cleanup_snapfiles (setup->snap_path);
+ cleanup_snapfiles (setup->bin_path);
}
int
Index: glib-2.76.2/gio/tests/portal-support-utils.c
===================================================================
--- glib-2.76.2.orig/gio/tests/portal-support-utils.c
+++ glib-2.76.2/gio/tests/portal-support-utils.c
@@ -26,6 +26,33 @@
#include <glib.h>
#include <glib/gstdio.h>
+
+void
+cleanup_snapfiles (const gchar *path)
+{
+ GDir *dir = NULL;
+ const gchar *entry;
+
+ dir = g_dir_open (path, 0, NULL);
+ if (dir == NULL)
+ {
+ /* Assume its a file. Ignore failure. */
+ (void) g_remove (path);
+ return;
+ }
+
+ while ((entry = g_dir_read_name (dir)) != NULL)
+ {
+ gchar *sub_path = g_build_filename (path, entry, NULL);
+ cleanup_snapfiles (sub_path);
+ g_free (sub_path);
+ }
+
+ g_dir_close (dir);
+
+ g_rmdir (path);
+}
+
void
create_fake_snapctl (const char *path,
const char *supported_op)
Index: glib-2.76.2/gio/tests/portal-support-utils.h
===================================================================
--- glib-2.76.2.orig/gio/tests/portal-support-utils.h
+++ glib-2.76.2/gio/tests/portal-support-utils.h
@@ -23,6 +23,8 @@
#include <glib.h>
+void cleanup_snapfiles (const gchar *path);
+
void create_fake_snap_yaml (const char *snap_path,
gboolean is_classic);
@@ -15,7 +15,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
file://0001-Avoid-having-g_futex_simple-inadvertently-modify-err.patch \
file://fix-ptest.patch \
file://0001-gio-tests-portal-support-Fix-snap-test-ordering-race.patch \
"
SRC_URI:append:class-native = " file://relocate-modules.patch"