diff options
author | Michał Górny <mgorny@gentoo.org> | 2024-09-20 13:37:49 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-20 13:37:49 (GMT) |
commit | 342e654b8eda24c68da64cc21bc9583e480d9e8e (patch) | |
tree | d28be64fdd9d7e5de97f215b11b4b5776a2593be /Lib/test/test_mmap.py | |
parent | 1a577729e347714eb819fa3a3a00149406c24e5e (diff) | |
download | cpython-342e654b8eda24c68da64cc21bc9583e480d9e8e.zip cpython-342e654b8eda24c68da64cc21bc9583e480d9e8e.tar.gz cpython-342e654b8eda24c68da64cc21bc9583e480d9e8e.tar.bz2 |
gh-124213: Skip tests failing inside systemd-nspawn --suppress-sync=true (#124215)
Add a helper function that checks whether the test suite is running
inside a systemd-nspawn container, and skip the few tests failing
with `--suppress-sync=true` in that case. The tests are failing because
`--suppress-sync=true` stubs out `fsync()`, `fdatasync()` and `msync()`
calls, and therefore they always return success without checking for
invalid arguments.
Call `os.open(__file__, os.O_RDONLY | os.O_SYNC)` and check the errno to
detect whether `--suppress-sync=true` is actually used, and skip
the tests only in that scenario.
Diffstat (limited to 'Lib/test/test_mmap.py')
-rw-r--r-- | Lib/test/test_mmap.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index a1cf538..b2a299e 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -1,5 +1,6 @@ from test.support import ( requires, _2G, _4G, gc_collect, cpython_only, is_emscripten, is_apple, + in_systemd_nspawn_sync_suppressed, ) from test.support.import_helper import import_module from test.support.os_helper import TESTFN, unlink @@ -839,7 +840,8 @@ class MmapTests(unittest.TestCase): mm.write(b'python') result = mm.flush() self.assertIsNone(result) - if sys.platform.startswith(('linux', 'android')): + if (sys.platform.startswith(('linux', 'android')) + and not in_systemd_nspawn_sync_suppressed()): # 'offset' must be a multiple of mmap.PAGESIZE on Linux. # See bpo-34754 for details. self.assertRaises(OSError, mm.flush, 1, len(b'python')) |