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:
+107
@@ -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 it’s 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 it’s 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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user