From: Ben Darnell Date: Mon, 17 Sep 2012 06:39:10 +0000 (-0700) Subject: Subprocess.returncode should match subprocess.Popen.returncode. X-Git-Tag: v3.0.0~272^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=200c607f1c42f3f9e3fd4412c4fc3dde777555ab;p=thirdparty%2Ftornado.git Subprocess.returncode should match subprocess.Popen.returncode. --- diff --git a/tornado/process.py b/tornado/process.py index 2e8ea329d..42349c40a 100644 --- a/tornado/process.py +++ b/tornado/process.py @@ -270,9 +270,13 @@ class Subprocess(object): subproc.io_loop.add_callback( functools.partial(subproc._set_returncode, status)) - def _set_returncode(self, ret): - self.returncode = ret + def _set_returncode(self, status): + if os.WIFSIGNALED(status): + self.returncode = -os.WTERMSIG(status) + else: + assert os.WIFEXITED(status) + self.returncode = os.WEXITSTATUS(status) if self._exit_callback: callback = self._exit_callback self._exit_callback = None - callback(ret) + callback(self.returncode) diff --git a/tornado/test/process_test.py b/tornado/test/process_test.py index 7bd750340..bfb4b4c0c 100644 --- a/tornado/test/process_test.py +++ b/tornado/test/process_test.py @@ -164,6 +164,5 @@ class SubprocessTest(AsyncTestCase): os.kill(subproc.pid, signal.SIGTERM) ret = self.wait() self.assertEqual(subproc.returncode, ret) - self.assertTrue(os.WIFSIGNALED(ret)) - self.assertEqual(os.WTERMSIG(ret), signal.SIGTERM) + self.assertEqual(ret, -signal.SIGTERM) SubprocessTest = skipIfNonUnix(SubprocessTest)