]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-39460: Fix test_zipfile.test_add_file_after_2107() (GH-18247)
authorVictor Stinner <vstinner@python.org>
Wed, 29 Jan 2020 14:23:29 +0000 (15:23 +0100)
committerGitHub <noreply@github.com>
Wed, 29 Jan 2020 14:23:29 +0000 (15:23 +0100)
XFS filesystem is limited to 32-bit timestamp, but the utimensat()
syscall doesn't fail. Moreover, there is a VFS bug which returns
a cached timestamp which is different than the value on disk.

https://bugzilla.redhat.com/show_bug.cgi?id=1795576
https://bugs.python.org/issue39460#msg360952

Lib/test/test_zipfile.py

index 66f05ac1f3aef064105c11e2e5ec40a2ef840d52..4c20bfd7e2cd7d259d49e95f0005ff1869485049 100644 (file)
@@ -616,6 +616,18 @@ class StoredTestsWithSourceFile(AbstractTestsWithSourceFile,
         except OverflowError:
             self.skipTest('Host fs cannot set timestamp to required value.')
 
+        mtime_ns = os.stat(TESTFN).st_mtime_ns
+        if mtime_ns != (4386268800 * 10**9):
+            # XFS filesystem is limited to 32-bit timestamp, but the syscall
+            # didn't fail. Moreover, there is a VFS bug which returns
+            # a cached timestamp which is different than the value on disk.
+            #
+            # Test st_mtime_ns rather than st_mtime to avoid rounding issues.
+            #
+            # https://bugzilla.redhat.com/show_bug.cgi?id=1795576
+            # https://bugs.python.org/issue39460#msg360952
+            self.skipTest(f"Linux VFS/XFS kernel bug detected: {mtime_ns=}")
+
         with zipfile.ZipFile(TESTFN2, "w") as zipfp:
             self.assertRaises(struct.error, zipfp.write, TESTFN)