Kaydet (Commit) 6c8c2943 authored tarafından Victor Stinner's avatar Victor Stinner Kaydeden (comit) GitHub

bpo-31160: test_tempfile: Fix reap_children() warning (#3056)

TestRandomNameSequence.test_process_awareness() now calls
os.waitpid() to avoid leaking a zombie process.
üst 7b7c6dcf
...@@ -78,7 +78,6 @@ class BaseTestCase(unittest.TestCase): ...@@ -78,7 +78,6 @@ class BaseTestCase(unittest.TestCase):
def tearDown(self): def tearDown(self):
self._warnings_manager.__exit__(None, None, None) self._warnings_manager.__exit__(None, None, None)
def nameCheck(self, name, dir, pre, suf): def nameCheck(self, name, dir, pre, suf):
(ndir, nbase) = os.path.split(name) (ndir, nbase) = os.path.split(name)
npre = nbase[:len(pre)] npre = nbase[:len(pre)]
...@@ -184,12 +183,15 @@ class TestRandomNameSequence(BaseTestCase): ...@@ -184,12 +183,15 @@ class TestRandomNameSequence(BaseTestCase):
try: try:
pid = os.fork() pid = os.fork()
if not pid: if not pid:
# child process
os.close(read_fd) os.close(read_fd)
os.write(write_fd, next(self.r).encode("ascii")) os.write(write_fd, next(self.r).encode("ascii"))
os.close(write_fd) os.close(write_fd)
# bypass the normal exit handlers- leave those to # bypass the normal exit handlers- leave those to
# the parent. # the parent.
os._exit(0) os._exit(0)
# parent process
parent_value = next(self.r) parent_value = next(self.r)
child_value = os.read(read_fd, len(parent_value)).decode("ascii") child_value = os.read(read_fd, len(parent_value)).decode("ascii")
finally: finally:
...@@ -200,6 +202,10 @@ class TestRandomNameSequence(BaseTestCase): ...@@ -200,6 +202,10 @@ class TestRandomNameSequence(BaseTestCase):
os.kill(pid, signal.SIGKILL) os.kill(pid, signal.SIGKILL)
except OSError: except OSError:
pass pass
# Read the process exit status to avoid zombie process
os.waitpid(pid, 0)
os.close(read_fd) os.close(read_fd)
os.close(write_fd) os.close(write_fd)
self.assertNotEqual(child_value, parent_value) self.assertNotEqual(child_value, parent_value)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment