From d1b83b8db14300007bc6d1d366a111bb7086a842 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Mon, 20 Feb 2017 14:35:34 -0500 Subject: [PATCH] process: Silence "subprocess still running" warnings on python3.6 --- tornado/process.py | 4 ++++ tornado/test/process_test.py | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tornado/process.py b/tornado/process.py index 7c876494c..5281fa5f5 100644 --- a/tornado/process.py +++ b/tornado/process.py @@ -355,6 +355,10 @@ class Subprocess(object): else: assert os.WIFEXITED(status) self.returncode = os.WEXITSTATUS(status) + # We've taken over wait() duty from the subprocess.Popen + # object. If we don't inform it of the process's return code, + # it will log a warning at destruction in python 3.6+. + self.proc.returncode = self.returncode if self._exit_callback: callback = self._exit_callback self._exit_callback = None diff --git a/tornado/test/process_test.py b/tornado/test/process_test.py index d5fff1706..d071ba5e7 100644 --- a/tornado/test/process_test.py +++ b/tornado/test/process_test.py @@ -149,7 +149,7 @@ class SubprocessTest(AsyncTestCase): stdin=Subprocess.STREAM, stdout=Subprocess.STREAM, stderr=subprocess.STDOUT, io_loop=self.io_loop) - self.addCleanup(lambda: os.kill(subproc.pid, signal.SIGTERM)) + self.addCleanup(lambda: (subproc.proc.terminate(), subproc.proc.wait())) subproc.stdout.read_until(b'>>> ', self.stop) self.wait() subproc.stdin.write(b"print('hello')\n") @@ -170,7 +170,7 @@ class SubprocessTest(AsyncTestCase): stdin=Subprocess.STREAM, stdout=Subprocess.STREAM, stderr=subprocess.STDOUT, io_loop=self.io_loop) - self.addCleanup(lambda: os.kill(subproc.pid, signal.SIGTERM)) + self.addCleanup(lambda: (subproc.proc.terminate(), subproc.proc.wait())) subproc.stdout.read_until(b'>>> ', self.stop) self.wait() subproc.stdin.close() @@ -186,7 +186,7 @@ class SubprocessTest(AsyncTestCase): r"import sys; sys.stderr.write('hello\n')"], stderr=Subprocess.STREAM, io_loop=self.io_loop) - self.addCleanup(lambda: os.kill(subproc.pid, signal.SIGTERM)) + self.addCleanup(lambda: (subproc.proc.terminate(), subproc.proc.wait())) subproc.stderr.read_until(b'\n', self.stop) data = self.wait() self.assertEqual(data, b'hello\n') -- 2.47.2