Commit ed2eb31da97331234bb12d70c1c16cae707d7f97

Guillem Jover 2023-04-01T02:46:22

test: Fix closefrom() test on macOS On macOS we do not close the file descriptors, and instead mark them all as close-on-exec. So checking whether they are not valid does not work.

diff --git a/test/closefrom.c b/test/closefrom.c
index aa8d3b2..474c69f 100644
--- a/test/closefrom.c
+++ b/test/closefrom.c
@@ -55,7 +55,19 @@ main(int argc, char *argv[])
 	closefrom(4);
 
 	for (i = 4; i < fd_max; i++) {
-		assert(fcntl(i, F_GETFL) == -1 && errno == EBADF);
+		int rc;
+
+		errno = 0;
+		rc = fcntl(i, F_GETFD);
+#ifdef __APPLE__
+		/* On macOS we only set close-on-exec. */
+		if ((i & (i - 1)) == 0)
+			assert(rc == FD_CLOEXEC);
+		else
+			assert(rc == -1 && errno == EBADF);
+#else
+		assert(rc == -1 && errno == EBADF);
+#endif
 	}
 	assert(fcntl(fd, F_GETFL) == -1 && errno == EBADF);