summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-08-10 11:05:06 (GMT)
committerGitHub <noreply@github.com>2017-08-10 11:05:06 (GMT)
commit6c8c2943d996b59a48d331f61f22cbe72933910e (patch)
tree3c9e1c1f5f4ff93180931cfbec2c0f4b2625244c
parent7b7c6dcfff6a35333988a3c74c895ed19dff2e09 (diff)
downloadcpython-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.
-rw-r--r--Lib/test/test_tempfile.py8
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)