[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