]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[tests] fix test_fcntl issue when run in a ChromeOS linux runtime (GH-133053)
authorGregory P. Smith <greg@krypto.org>
Sun, 27 Apr 2025 20:28:23 +0000 (13:28 -0700)
committerGitHub <noreply@github.com>
Sun, 27 Apr 2025 20:28:23 +0000 (13:28 -0700)
* [tests] test_fcntl fails when run in a ChromeOS linux runtime container.

It doesn't appear to support F_NOTIFY? Detect the lack of that and skip the test.

Lib/test/test_fcntl.py

index bb784cbe2ce0366bece96f966eb1da9bfc96e143..b84c98ef3a2972d41f02d74729ed49968d806c1d 100644 (file)
@@ -1,5 +1,6 @@
 """Test program for the fcntl C module.
 """
+import errno
 import multiprocessing
 import platform
 import os
@@ -135,16 +136,21 @@ class TestFcntl(unittest.TestCase):
         or platform.system() == "Android",
         "this platform returns EINVAL for F_NOTIFY DN_MULTISHOT")
     def test_fcntl_64_bit(self):
-        # Issue #1309352: fcntl shouldn't fail when the third arg fits in a
+        # Issue GH-42434: fcntl shouldn't fail when the third arg fits in a
         # C 'long' but not in a C 'int'.
         try:
             cmd = fcntl.F_NOTIFY
-            # This flag is larger than 2**31 in 64-bit builds
+            # DN_MULTISHOT is >= 2**31 in 64-bit builds
             flags = fcntl.DN_MULTISHOT
         except AttributeError:
             self.skipTest("F_NOTIFY or DN_MULTISHOT unavailable")
         fd = os.open(os.path.dirname(os.path.abspath(TESTFN)), os.O_RDONLY)
         try:
+            try:
+                fcntl.fcntl(fd, cmd, fcntl.DN_DELETE)
+            except OSError as exc:
+                if exc.errno == errno.EINVAL:
+                    self.skipTest("F_NOTIFY not available by this environment")
             fcntl.fcntl(fd, cmd, flags)
         finally:
             os.close(fd)