Subject: [PATCH core-updates-frozen] gnu: glib: Skip ‘testfilemonitor’ test.

From: Thiago Jung Bauermann <[email-masked]>
Date: Tue, 12 Oct 2021 13:03:12 -0300

On powerpc64le-linux, it fails approximately 2 out of 3 times. On x86_64 it
also fails every now and then, at least on glib’s CI.

* gnu/packages/patches/glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add new patch.
* gnu/packages/glib.scm: Use it.
---

Hello,

Since glib was recently updated on core-updates frozen, it stopped building
on powerpc64le-linux because of this test failure. I noticed the issue while
testing `guix pull` from the branch and the pull failed due to this problem.
It turns out Debian has a patch addressing exactly this, so let’s use it
too.

Unfortunately, `guix pull` still fails on powerpc64le-linux because the Guix
package recently started to depend on MariaDB, which unfortunately I t think
never built successfuly on this platform due to testsuite failures.

 gnu/local.mk                                  |   1 +
 gnu/packages/glib.scm                         |   3 +-
 ...-Skip-if-we-are-avoiding-flaky-tests.patch | 111 ++++++++++++++++++
 3 files changed, 114 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index dfb9e50b7369..e4d66c833643 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1124,6 +1124,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/glib-appinfo-watch.patch			\
   %D%/packages/patches/glib-networking-gnutls-binding.patch	\
   %D%/packages/patches/glib-skip-failing-test.patch		\
+  %D%/packages/patches/glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch	\
   %D%/packages/patches/glibc-CVE-2018-11236.patch		\
   %D%/packages/patches/glibc-CVE-2018-11237.patch		\
   %D%/packages/patches/glibc-CVE-2019-7309.patch		\
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 6373fd0da9d1..9fc46b2101b1 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -190,7 +190,8 @@ shared NFS home directories.")
         (base32 "0f1iprj7v0b5wn9njj39dkl25g6filfs7i4ybk20jq821k1a7qg7"))
        (patches
         (search-patches "glib-appinfo-watch.patch"
-                        "glib-skip-failing-test.patch"))
+                        "glib-skip-failing-test.patch"
+                        "glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/patches/glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch b/gnu/packages/patches/glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch
new file mode 100644
index 000000000000..3feaa75bd0e7
--- /dev/null
+++ b/gnu/packages/patches/glib-testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch
@@ -0,0 +1,111 @@
+On powerpc64le-linux, testfilemonitor fails approximately 2 out of 3 times.
+Patch obtained from:
+
+https://sources.debian.org/patches/glib2.0/2.66.8-1/debian/testfilemonitor-Skip-if-we-are-avoiding-flaky-tests.patch/
+
+From: Simon McVittie <[email-masked]>
+Date: Tue, 25 Feb 2020 10:45:07 +0000
+Subject: testfilemonitor: Skip if we are avoiding flaky tests
+
+See https://gitlab.gnome.org/GNOME/glib/issues/1634
+
+Signed-off-by: Simon McVittie <[email-masked]>
+Forwarded: no
+---
+ gio/tests/testfilemonitor.c | 34 +++++++++++++++++++++++++++++++++-
+ 1 file changed, 33 insertions(+), 1 deletion(-)
+
+diff --git a/gio/tests/testfilemonitor.c b/gio/tests/testfilemonitor.c
+index b74dc2b..79b5776 100644
+--- a/gio/tests/testfilemonitor.c
++++ b/gio/tests/testfilemonitor.c
+@@ -21,6 +21,12 @@ setup (Fixture       *fixture,
+   gchar *path = NULL;
+   GError *local_error = NULL;
+ 
++  if (g_getenv ("DEB_ALLOW_FLAKY_TESTS") == NULL)
++    {
++      g_test_skip ("https://gitlab.gnome.org/GNOME/glib/issues/1634");
++      return;
++    }
++
+   path = g_dir_make_tmp ("gio-test-testfilemonitor_XXXXXX", &local_error);
+   g_assert_no_error (local_error);
+ 
+@@ -37,7 +43,9 @@ teardown (Fixture       *fixture,
+ {
+   GError *local_error = NULL;
+ 
+-  g_file_delete (fixture->tmp_dir, NULL, &local_error);
++  if (fixture->tmp_dir != NULL)
++    g_file_delete (fixture->tmp_dir, NULL, &local_error);
++
+   g_assert_no_error (local_error);
+   g_clear_object (&fixture->tmp_dir);
+ }
+@@ -360,6 +368,10 @@ test_atomic_replace (Fixture       *fixture,
+   GError *error = NULL;
+   TestData data;
+ 
++  /* respect g_test_skip() during setup() */
++  if (g_test_failed ())
++    return;
++
+   data.step = 0;
+   data.events = NULL;
+ 
+@@ -465,6 +477,10 @@ test_file_changes (Fixture       *fixture,
+   GError *error = NULL;
+   TestData data;
+ 
++  /* respect g_test_skip() during setup() */
++  if (g_test_failed ())
++    return;
++
+   data.step = 0;
+   data.events = NULL;
+ 
+@@ -582,6 +598,10 @@ test_dir_monitor (Fixture       *fixture,
+   GError *error = NULL;
+   TestData data;
+ 
++  /* respect g_test_skip() during setup() */
++  if (g_test_failed ())
++    return;
++
+   data.step = 0;
+   data.events = NULL;
+ 
+@@ -679,6 +699,10 @@ test_dir_non_existent (Fixture       *fixture,
+   TestData data;
+   GError *error = NULL;
+ 
++  /* respect g_test_skip() during setup() */
++  if (g_test_failed ())
++    return;
++
+   data.step = 0;
+   data.events = NULL;
+ 
+@@ -788,6 +812,10 @@ test_cross_dir_moves (Fixture       *fixture,
+   GError *error = NULL;
+   TestData data[2];
+ 
++  /* respect g_test_skip() during setup() */
++  if (g_test_failed ())
++    return;
++
+   data[0].step = 0;
+   data[0].events = NULL;
+ 
+@@ -957,6 +985,10 @@ test_file_hard_links (Fixture       *fixture,
+   GError *error = NULL;
+   TestData data;
+ 
++  /* respect g_test_skip() during setup() */
++  if (g_test_failed ())
++    return;
++
+   g_test_bug ("755721");
+ 
+ #ifdef HAVE_LINK