diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-08-10 11:05:06 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-10 11:05:06 (GMT) |
commit | 6c8c2943d996b59a48d331f61f22cbe72933910e (patch) | |
tree | 3c9e1c1f5f4ff93180931cfbec2c0f4b2625244c /Lib/test/test_tempfile.py | |
parent | 7b7c6dcfff6a35333988a3c74c895ed19dff2e09 (diff) | |
download | cpython-6c8c2943d996b59a48d331f61f22cbe72933910e.zip cpython-6c8c2943d996b59a48d331f61f22cbe72933910e.tar.gz cpython-6c8c2943d996b59a48d331f61f22cbe72933910e.tar.bz2 |
bpo-31160: test_tempfile: Fix reap_children() warning (#3056)
TestRandomNameSequence.test_process_awareness() now calls
os.waitpid() to avoid leaking a zombie process.
Diffstat (limited to 'Lib/test/test_tempfile.py')
-rw-r--r-- | Lib/test/test_tempfile.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index d0cf04b..710756b 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -78,7 +78,6 @@ class BaseTestCase(unittest.TestCase): def tearDown(self): self._warnings_manager.__exit__(None, None, None) - def nameCheck(self, name, dir, pre, suf): (ndir, nbase) = os.path.split(name) npre = nbase[:len(pre)] @@ -184,12 +183,15 @@ class TestRandomNameSequence(BaseTestCase): try: pid = os.fork() if not pid: + # child process os.close(read_fd) os.write(write_fd, next(self.r).encode("ascii")) os.close(write_fd) # bypass the normal exit handlers- leave those to # the parent. os._exit(0) + + # parent process parent_value = next(self.r) child_value = os.read(read_fd, len(parent_value)).decode("ascii") finally: @@ -200,6 +202,10 @@ class TestRandomNameSequence(BaseTestCase): os.kill(pid, signal.SIGKILL) except OSError: pass + + # Read the process exit status to avoid zombie process + os.waitpid(pid, 0) + os.close(read_fd) os.close(write_fd) self.assertNotEqual(child_value, parent_value) |