| Index: testing/scripts/common.py
|
| diff --git a/testing/scripts/common.py b/testing/scripts/common.py
|
| index d366fe15b24e9d95c922b17441704f76167963a4..6454aff38880aed5f8c941c08935552718950c1f 100644
|
| --- a/testing/scripts/common.py
|
| +++ b/testing/scripts/common.py
|
| @@ -4,11 +4,14 @@
|
|
|
| import argparse
|
| import contextlib
|
| +import io
|
| import json
|
| import os
|
| +import logging
|
| import subprocess
|
| import sys
|
| import tempfile
|
| +import time
|
|
|
|
|
| SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
|
| @@ -70,21 +73,22 @@ def run_command(argv, env=None, cwd=None):
|
| return rc
|
|
|
|
|
| -def run_command_with_output(argv, env=None, cwd=None, stdoutfile=None):
|
| +def run_command_with_output(argv, stdoutfile, env=None, cwd=None):
|
| + """ Run command and stream its stdout/stderr to the console & |stdoutfile|.
|
| + """
|
| print 'Running %r in %r (env: %r)' % (argv, cwd, env)
|
| - rc = 1
|
| - try:
|
| - output = subprocess.check_output(argv, env=env, cwd=cwd,
|
| + assert stdoutfile
|
| + with io.open(stdoutfile, 'w') as writer, io.open(stdoutfile, 'r', 1) as \
|
| + reader:
|
| + process = subprocess.Popen(argv, env=env, cwd=cwd, stdout=writer,
|
| stderr=subprocess.STDOUT)
|
| - if stdoutfile:
|
| - with open(stdoutfile, 'w') as fp:
|
| - fp.write(output)
|
| - rc = 0
|
| - except Exception:
|
| - # Exit code remains 1 and we don't write output
|
| - pass
|
| - print 'Command %r returned exit code %d' % (argv, rc)
|
| - return rc
|
| + while process.poll() is None:
|
| + sys.stdout.write(reader.read())
|
| + time.sleep(0.1)
|
| + # Read the remaining
|
| + sys.stdout.write(reader.read())
|
| + print 'Command %r returned exit code %d' % (argv, process.returncode)
|
| + return process.returncode
|
|
|
|
|
| def run_runtest(cmd_args, runtest_args):
|
|
|