this test checks for correct wait4 behavior if either of these do not exist skip this test issue 11185 wait4 is broken on aix and will always return 0 with wnohang wait4 shouldn t hang but some of the buildbots seem to hang in the forking tests this is an attempt to fix the problem if either of these do not exist skip this test issue 11185 wait4 is broken on aix and will always return 0 with wnohang wait4 shouldn t hang but some of the buildbots seem to hang in the forking tests this is an attempt to fix the problem
import os
import sys
import unittest
from test.fork_wait import ForkWait
from test import support


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'):
            
            
            option = 0
        for _ in support.sleeping_retry(support.SHORT_TIMEOUT):
            
            
            spid, status, rusage = os.wait4(cpid, option)
            if spid == cpid:
                break
        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()