]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Subprocess.returncode should match subprocess.Popen.returncode.
authorBen Darnell <ben@bendarnell.com>
Mon, 17 Sep 2012 06:39:10 +0000 (23:39 -0700)
committerBen Darnell <ben@bendarnell.com>
Mon, 17 Sep 2012 06:39:10 +0000 (23:39 -0700)
tornado/process.py
tornado/test/process_test.py

index 2e8ea329ddadfc5a975c7c120fda4b94d7c789e8..42349c40ad9f9bf41459057a05f63836154baf71 100644 (file)
@@ -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)
index 7bd75034078c88b195d463f69aa85561905d43a0..bfb4b4c0cf519fb25ba0e39d6fdd2e30dc7c6247 100644 (file)
@@ -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)