test/py: multiplexed_log.py: Clean up and correct RunAndLog()

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 <trini@konsulko.com>
This commit is contained in:
Tom Rini
2025-10-24 11:26:42 -06:00
parent 09ca8d472e
commit 20b822dd4f

View File

@@ -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: