From: Ben Darnell Date: Mon, 20 Feb 2017 19:35:34 +0000 (-0500) Subject: process: Silence "subprocess still running" warnings on python3.6 X-Git-Tag: v4.5.0~36^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1b83b8db14300007bc6d1d366a111bb7086a842;p=thirdparty%2Ftornado.git process: Silence "subprocess still running" warnings on python3.6 --- 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')