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

Ian Romanick idr at freedesktop.org
Mon Jan 26 13:42:27 PST 2015


On 01/26/2015 11:28 AM, Dylan Baker wrote:
> 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']
>  
>  
> -

Should this whitespace change have been in patch 3?

>  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])
>  
> 



More information about the Piglit mailing list