From b914b96d4f8f034f3882234f1505e7c28e6a61f5 Mon Sep 17 00:00:00 2001
From: Matthew Treinish <mtreinish@kortar.org>
Date: Tue, 17 Mar 2015 18:55:17 -0400
Subject: [PATCH] Fix return code on test run failure

This commit fixes the return code handling to ensure we return the
same return code as the called test runner.
---
 os_testr/os_testr.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/os_testr/os_testr.py b/os_testr/os_testr.py
index ca7f50b..d77f902 100755
--- a/os_testr/os_testr.py
+++ b/os_testr/os_testr.py
@@ -83,7 +83,8 @@ def call_testr(regex, subunit, pretty, list_tests, slowest):
         ps.stdout.close()
     else:
         proc = subprocess.Popen(cmd, env=env)
-    return_code = proc.communicate()[0]
+    proc.communicate()
+    return_code = proc.returncode
     if slowest and not list_tests:
         print("\nSlowest Tests:\n")
         slow_proc = subprocess.Popen(['testr', 'slowest'], env=env)
@@ -101,14 +102,16 @@ def call_subunit_run(test_id, pretty):
         ps.stdout.close()
     else:
         proc = subprocess.Popen(cmd, env=env)
-    return_code = proc.communicate()[0]
+    proc.communicate()
+    return_code = proc.returncode
     return return_code
 
 def call_testtools_run(test_id):
     cmd = ['python', '-m', 'testtools.run', test_id]
     env = copy.deepcopy(os.environ)
     proc = subprocess.Popen(cmd, env=env)
-    return_code = proc.communicate()[0]
+    proc.communicate()
+    return_code = proc.returncode
     return return_code
 
 def main():