[Piglit] [Patch v2 8/8] igt.py: Use subprocess.check_output instead of subprocess.Popen

Dylan Baker baker.dylan.c at gmail.com
Mon Jan 26 11:28:15 PST 2015


This is somewhat simpler way to handle this, since check_output monitors
only stdout, and hides stderr, and it gives us a lovely exception if the
returncode isn't 0, which allows us to completely bypass the error
checking code if there is no error.

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 tests/igt.py | 34 +++++++++++++++-------------------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/tests/igt.py b/tests/igt.py
index ca8f295..f4a49ac 100644
--- a/tests/igt.py
+++ b/tests/igt.py
@@ -43,7 +43,6 @@ from framework.profile import TestProfile, Test
 __all__ = ['profile']
 
 
-
 def check_environment():
     """Check that the environment that piglit is running in is appropraite.
 
@@ -139,27 +138,24 @@ def list_tests(listname):
 
 def add_subtest_cases(test):
     """Get subtest instances."""
-    proc = subprocess.Popen(
-        [os.path.join(IGT_TEST_ROOT, test), '--list-subtests'],
-        stdout=subprocess.PIPE,
-        env=os.environ.copy(),
-        universal_newlines=True)
-    out, _ = proc.communicate()
-
-    # a return code of 79 indicates there are no subtests
-    if proc.returncode == 79:
-        profile.test_list[grouptools.join('igt', test)] = IGTTest(test)
-        return
+    try:
+        out = subprocess.check_output(
+            [os.path.join(IGT_TEST_ROOT, test), '--list-subtests'],
+            env=os.environ.copy(),
+            universal_newlines=True)
+    except subprocess.CalledProcessError as e:
+        # a return code of 79 indicates there are no subtests
+        if e.returncode == 79:
+            profile.test_list[grouptools.join('igt', test)] = IGTTest(test)
+        elif e.returncode != 0:
+            print("Error: Could not list subtests for " + test)
+        else:
+            raise
 
-    if proc.returncode != 0:
-        print("Error: Could not list subtests for " + test)
+        # If we reach here there are no subtests.
         return
 
-    subtests = out.split("\n")
-
-    for subtest in subtests:
-        if subtest == "":
-            continue
+    for subtest in (s for s in out.splitlines() if s):
         profile.test_list[grouptools.join('igt', test, subtest)] = \
             IGTTest(test, ['--run-subtest', subtest])
 
-- 
2.2.2



More information about the Piglit mailing list