Skip to content

Test failures inside systemd-nspawn --suppress-sync=true container #124213

@mgorny

Description

@mgorny

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

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions