mirror of
https://github.com/python/cpython.git
synced 2025-07-22 10:45:22 +00:00

- Add requires_fork and requires_subprocess to more tests - Skip extension import tests if dlopen is not available - Don't assume that _testcapi is a shared extension - Skip a lot of socket tests that don't work on Emscripten - Skip mmap tests, mmap emulation is incomplete - venv does not work yet - Cannot get libc from executable The "entire" test suite is now passing on Emscripten with EMSDK from git head (91 suites are skipped).
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""This test checks for correct wait4() behavior.
|
|
"""
|
|
|
|
import os
|
|
import time
|
|
import sys
|
|
import unittest
|
|
from test.fork_wait import ForkWait
|
|
from test import support
|
|
|
|
# If either of these do not exist, skip this test.
|
|
if not support.has_fork_support:
|
|
raise unittest.SkipTest("requires working os.fork()")
|
|
|
|
support.get_attribute(os, 'wait4')
|
|
|
|
|
|
class Wait4Test(ForkWait):
|
|
def wait_impl(self, cpid, *, exitcode):
|
|
option = os.WNOHANG
|
|
if sys.platform.startswith('aix'):
|
|
# Issue #11185: wait4 is broken on AIX and will always return 0
|
|
# with WNOHANG.
|
|
option = 0
|
|
deadline = time.monotonic() + support.SHORT_TIMEOUT
|
|
while time.monotonic() <= deadline:
|
|
# wait4() shouldn't hang, but some of the buildbots seem to hang
|
|
# in the forking tests. This is an attempt to fix the problem.
|
|
spid, status, rusage = os.wait4(cpid, option)
|
|
if spid == cpid:
|
|
break
|
|
time.sleep(0.1)
|
|
self.assertEqual(spid, cpid)
|
|
self.assertEqual(os.waitstatus_to_exitcode(status), exitcode)
|
|
self.assertTrue(rusage)
|
|
|
|
def tearDownModule():
|
|
support.reap_children()
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|