From 6bf514c4c39c7714eeec0448f9a9842440799769 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Mon, 16 Nov 2020 14:25:09 -0800 Subject: [PATCH] test-runner: store process stdout If a blocking process is started store the output in case the caller needs it. Output will be stored in Process.out. --- tools/test-runner | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tools/test-runner b/tools/test-runner index 97d0e32c..77b2c9fc 100755 --- a/tools/test-runner +++ b/tools/test-runner @@ -209,17 +209,27 @@ class Process: self.stdout = sys.__stdout__ self.stderr = sys.__stderr__ - if not wait and not check: - self.pid = subprocess.Popen(self.args, stdout=self.stdout, \ + + self.pid = subprocess.Popen(self.args, stdout=self.stdout, \ stderr=self.stderr, env=env, \ cwd=os.getcwd()) - print("Starting process {}".format(self.pid.args)) - else: - self.ret = subprocess.call(self.args, stdout=self.stdout, \ - stderr=self.stderr) - print("%s returned %d" % (args[0], self.ret)) - if check and self.ret != 0: - raise subprocess.CalledProcessError(returncode=self.ret, cmd=self.args) + + print("Starting process {}".format(self.pid.args)) + + if not wait and not check: + return + + self.pid.wait() + + self.out, _ = self.pid.communicate() + self.ret = self.pid.returncode + + if self.out: + self.out = self.out.decode('utf-8') + + print("%s returned %d" % (args[0], self.ret)) + if check and self.ret != 0: + raise subprocess.CalledProcessError(returncode=self.ret, cmd=self.args) def __del__(self): print("Del process %s" % self.args)