From 419daef1a844be5fccb0d8f10a299279586d1cbd Mon Sep 17 00:00:00 2001 From: Christian Trautman Date: Thu, 12 May 2016 09:26:47 -0400 Subject: [PATCH] run_task_fix: Fix run_task to provide all output from command Fix run_task to correctly provide all output from command sent. Commands that produced longer output would not return all text. JIRA: VSPERF-296 Change-Id: I7e501690ffdb7c01f90d524ffbabe65500f62304 Signed-off-by: Christian Trautman --- tools/tasks.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/tools/tasks.py b/tools/tasks.py index dda5217d..9816a336 100644 --- a/tools/tasks.py +++ b/tools/tasks.py @@ -86,17 +86,24 @@ def run_task(cmd, logger, msg=None, check_error=False): for file_d in ret[0]: if file_d == proc.stdout.fileno(): - line = proc.stdout.readline() - if settings.getValue('VERBOSITY') == 'debug': - sys.stdout.write(line.decode(my_encoding)) - stdout.append(line) + while True: + line = proc.stdout.readline() + if not line: + break + if settings.getValue('VERBOSITY') == 'debug': + sys.stdout.write(line.decode(my_encoding)) + stdout.append(line) if file_d == proc.stderr.fileno(): - line = proc.stderr.readline() - sys.stderr.write(line.decode(my_encoding)) - stderr.append(line) + while True: + line = proc.stderr.readline() + if not line: + break + sys.stderr.write(line.decode(my_encoding)) + stderr.append(line) if proc.poll() is not None: break + except OSError as ex: handle_error(ex) else: -- 2.16.6