From 0addf736b38589d1f1de1fcae6a7c832039b7b79 Mon Sep 17 00:00:00 2001
From: Tomas Volf <~@wolfsden.cz>
Date: Thu, 8 Aug 2024 17:00:34 +0200
Subject: [PATCH 3/9] tests: Skip hole-related port tests on Darwin.

Hole are itself a file-system specific feature and they are not
mandated.  While APFS does support sparse files, they do not behave like
on Linux.  I did not discover exact rules, but the file needs to be
large (100s of kB at least) and the holes are not aligned as the test
code expects.  So just disable them.

* test-suite/tests/ports.test (skip-on-darwin): New procedure.
("size of sparse file", "SEEK_DATA while on data")
("SEEK_DATA while in hole", "SEEK_HOLE while in hole"): Skip on Darwin.
---
 test-suite/tests/ports.test | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/test-suite/tests/ports.test b/test-suite/tests/ports.test
index 7b5b535e7..3fde402b4 100644
--- a/test-suite/tests/ports.test
+++ b/test-suite/tests/ports.test
@@ -39,6 +39,10 @@
 (define (test-file)
   (data-file-name "ports-test.tmp"))
 
+(define (skip-on-darwin)
+  (when (string-ci=? "darwin" (vector-ref (uname) 0))
+    (throw 'untested)))
+
 
 ;;;; Some general utilities for testing ports.
 
@@ -185,6 +189,7 @@
     (close-port iport))
   (delete-file filename))
 
+;;; Note: Holes are weird on Darwin.
 (let* ((file (test-file))
        (port (open-output-file file)))
   (seek port 4096 SEEK_SET)
@@ -193,10 +198,12 @@
 
   (pass-if-equal "size of sparse file"
       4100
+    (skip-on-darwin)
     (stat:size (stat file)))
 
   (pass-if-equal "SEEK_DATA while on data"
       4096
+    (skip-on-darwin)
     (if (defined? 'SEEK_DATA)
         (call-with-input-file file
           (lambda (port)
@@ -209,6 +216,7 @@
 
   (pass-if-equal "SEEK_DATA while in hole"
       4096
+    (skip-on-darwin)
     (if (defined? 'SEEK_DATA)
         (call-with-input-file file
           (lambda (port)
@@ -221,6 +229,7 @@
 
   (pass-if-equal "SEEK_HOLE while in hole"
       10
+    (skip-on-darwin)
     (if (defined? 'SEEK_HOLE)
         (call-with-input-file file
           (lambda (port)
-- 
2.45.2

