The general python documentation for the subprocess class recommends that run() be used in all cases that it can handle. What we do in RunAndLog is simple enough that run() is easy to switch to. In fact, looking at this exposed a problem we have today, which is that we had combined stdout and stderr but then looked at both stdout and stderr as if they were separate. Stop combining them.
Signed-off-by: Tom Rini <[email protected]> --- test/py/multiplexed_log.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/py/multiplexed_log.py b/test/py/multiplexed_log.py index 63237594bb40..68dc183e4638 100644 --- a/test/py/multiplexed_log.py +++ b/test/py/multiplexed_log.py @@ -138,10 +138,10 @@ class RunAndLog(object): self.logfile.write(self, msg) try: - p = subprocess.Popen(cmd, cwd=cwd, - stdin=subprocess.PIPE if stdin else None, - stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=env) - (stdout, stderr) = p.communicate(input=stdin) + p = subprocess.run(cmd, cwd=cwd, capture_output=True, input=stdin, + env=env) + stdout = p.stdout + stderr = p.stderr if stdout is not None: stdout = stdout.decode('utf-8') if stderr is not None: -- 2.43.0

