Bug report
Bug description:
When the CPython's test suite is run inside a systemd-nspawn container with --suppress-sync=true specified, the following tests fail:
====================================================================== FAIL: test_fdatasync (test.test_os.TestInvalidFD) ---------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/portage/dev-lang/python-3.8.19_p2/work/Python-3.8.19/Lib/test/test_os.py", line 1850, in helper self.check(getattr(os, f)) File "/var/tmp/portage/dev-lang/python-3.8.19_p2/work/Python-3.8.19/Lib/test/test_os.py", line 1861, in check self.fail("%r didn't raise an OSError with a bad file descriptor" AssertionError: <built-in function fdatasync> didn't raise an OSError with a bad file descriptor ====================================================================== FAIL: test_fsync (test.test_os.TestInvalidFD) ---------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/portage/dev-lang/python-3.8.19_p2/work/Python-3.8.19/Lib/test/test_os.py", line 1850, in helper self.check(getattr(os, f)) File "/var/tmp/portage/dev-lang/python-3.8.19_p2/work/Python-3.8.19/Lib/test/test_os.py", line 1861, in check self.fail("%r didn't raise an OSError with a bad file descriptor" AssertionError: <built-in function fsync> didn't raise an OSError with a bad file descriptor ---------------------------------------------------------------------- ====================================================================== FAIL: test_flush_return_value (test.test_mmap.MmapTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/var/tmp/portage/dev-lang/python-3.8.19_p2/work/Python-3.8.19/Lib/test/test_mmap.py", line 746, in test_flush_return_value self.assertRaises(OSError, mm.flush, 1, len(b'python')) AssertionError: OSError not raised by flush ----------------------------------------------------------------------
This is because systemd-nspawn uses seccomp to stub out fsync(), fdatasync() and msync() calls, and this implies they always return success.
CPython versions tested on:
3.13
Operating systems tested on:
Linux