Fixed Popen deadlock issue in test.py

As noted in Python's subprocess library:

> This will deadlock when using stdout=PIPE and/or stderr=PIPE and the
> child process generates enough output to a pipe such that it blocks
> waiting for the OS pipe buffer to accept more data.

Curiously, this only became a problem when updating to Ubuntu 20.04
in CI (python3.6 -> python3.8).
This commit is contained in:
Christopher Haster
2022-03-19 21:15:07 -05:00
parent fe8f3d4f18
commit 554e4b1444
2 changed files with 21 additions and 10 deletions

View File

@@ -784,10 +784,13 @@ def main(**args):
stdout=sp.PIPE if not args.get('verbose') else None,
stderr=sp.STDOUT if not args.get('verbose') else None,
universal_newlines=True)
stdout = []
for line in proc.stdout:
stdout.append(line)
proc.wait()
if proc.returncode != 0:
if not args.get('verbose'):
for line in proc.stdout:
for line in stdout:
sys.stdout.write(line)
sys.exit(-1)