From: Bruno Haible <bruno@clisp.org>
Date: Mon, 2 Sep 2024 07:27:04 +0000 (+0200)
Subject: utime, futimens tests: Avoid test failure on Haiku.
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=caba3a763af463725a1e0e3c30a78913384eabb4;p=gnulib.git

utime, futimens tests: Avoid test failure on Haiku.

* tests/test-utimens-common.h (checkable_atime): On Haiku, return false.
---

diff --git a/ChangeLog b/ChangeLog
index 41e41b9308..c449ad522b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-09-02  Bruno Haible  <bruno@clisp.org>
+
+	utime, futimens tests: Avoid test failure on Haiku.
+	* tests/test-utimens-common.h (checkable_atime): On Haiku, return false.
+
 2024-09-01  Bruno Haible  <bruno@clisp.org>
 
 	strtold: Work around a Haiku bug.
diff --git a/tests/test-utimens-common.h b/tests/test-utimens-common.h
index f9fdb9a867..a59e65df8c 100644
--- a/tests/test-utimens-common.h
+++ b/tests/test-utimens-common.h
@@ -93,8 +93,15 @@ checkable_atime (int fd, struct stat *st)
   ASSERT (read (fd, buf, sizeof buf) == 0);
   ASSERT (fstat (fd, &st2) == 0);
   bool check_atime
+#if defined __HAIKU__
+  /* On Haiku, the st_atime field is always the current time.  It is as if there
+     was a daemon running (as root) that constantly reads from all files on all
+     disks at the same time.  See <https://dev.haiku-os.org/ticket/19038>.  */
+    = false;
+#else
     = (st1.st_atime != st2.st_atime
        || get_stat_atime_ns (&st1) != get_stat_atime_ns (&st2));
+#endif
   if (st)
     *st = st2;
   return check_atime;