| Index: tools/testrunner/local/commands.py
|
| diff --git a/tools/testrunner/local/commands.py b/tools/testrunner/local/commands.py
|
| index 4f3dc51e02b20d763e80adb3d65c9e8433ebd21d..d6445d0c7a67838f863cef5b6f2370f32f8790aa 100644
|
| --- a/tools/testrunner/local/commands.py
|
| +++ b/tools/testrunner/local/commands.py
|
| @@ -64,49 +64,46 @@ def Win32SetErrorMode(mode):
|
|
|
|
|
| def RunProcess(verbose, timeout, args, **rest):
|
| - try:
|
| - if verbose: print "#", " ".join(args)
|
| - popen_args = args
|
| - prev_error_mode = SEM_INVALID_VALUE
|
| - if utils.IsWindows():
|
| - popen_args = subprocess.list2cmdline(args)
|
| - # Try to change the error mode to avoid dialogs on fatal errors. Don't
|
| - # touch any existing error mode flags by merging the existing error mode.
|
| - # See http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx.
|
| - error_mode = SEM_NOGPFAULTERRORBOX
|
| - prev_error_mode = Win32SetErrorMode(error_mode)
|
| - Win32SetErrorMode(error_mode | prev_error_mode)
|
| - process = subprocess.Popen(
|
| - shell=utils.IsWindows(),
|
| - args=popen_args,
|
| - **rest
|
| - )
|
| - if (utils.IsWindows() and prev_error_mode != SEM_INVALID_VALUE):
|
| - Win32SetErrorMode(prev_error_mode)
|
| - # Compute the end time - if the process crosses this limit we
|
| - # consider it timed out.
|
| - if timeout is None: end_time = None
|
| - else: end_time = time.time() + timeout
|
| - timed_out = False
|
| - # Repeatedly check the exit code from the process in a
|
| - # loop and keep track of whether or not it times out.
|
| - exit_code = None
|
| - sleep_time = INITIAL_SLEEP_TIME
|
| - while exit_code is None:
|
| - if (not end_time is None) and (time.time() >= end_time):
|
| - # Kill the process and wait for it to exit.
|
| - KillProcessWithID(process.pid)
|
| - exit_code = process.wait()
|
| - timed_out = True
|
| - else:
|
| - exit_code = process.poll()
|
| - time.sleep(sleep_time)
|
| - sleep_time = sleep_time * SLEEP_TIME_FACTOR
|
| - if sleep_time > MAX_SLEEP_TIME:
|
| - sleep_time = MAX_SLEEP_TIME
|
| - return (exit_code, timed_out)
|
| - except KeyboardInterrupt:
|
| - raise
|
| + if verbose: print "#", " ".join(args)
|
| + popen_args = args
|
| + prev_error_mode = SEM_INVALID_VALUE
|
| + if utils.IsWindows():
|
| + popen_args = subprocess.list2cmdline(args)
|
| + # Try to change the error mode to avoid dialogs on fatal errors. Don't
|
| + # touch any existing error mode flags by merging the existing error mode.
|
| + # See http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx.
|
| + error_mode = SEM_NOGPFAULTERRORBOX
|
| + prev_error_mode = Win32SetErrorMode(error_mode)
|
| + Win32SetErrorMode(error_mode | prev_error_mode)
|
| + process = subprocess.Popen(
|
| + shell=utils.IsWindows(),
|
| + args=popen_args,
|
| + **rest
|
| + )
|
| + if (utils.IsWindows() and prev_error_mode != SEM_INVALID_VALUE):
|
| + Win32SetErrorMode(prev_error_mode)
|
| + # Compute the end time - if the process crosses this limit we
|
| + # consider it timed out.
|
| + if timeout is None: end_time = None
|
| + else: end_time = time.time() + timeout
|
| + timed_out = False
|
| + # Repeatedly check the exit code from the process in a
|
| + # loop and keep track of whether or not it times out.
|
| + exit_code = None
|
| + sleep_time = INITIAL_SLEEP_TIME
|
| + while exit_code is None:
|
| + if (not end_time is None) and (time.time() >= end_time):
|
| + # Kill the process and wait for it to exit.
|
| + KillProcessWithID(process.pid)
|
| + exit_code = process.wait()
|
| + timed_out = True
|
| + else:
|
| + exit_code = process.poll()
|
| + time.sleep(sleep_time)
|
| + sleep_time = sleep_time * SLEEP_TIME_FACTOR
|
| + if sleep_time > MAX_SLEEP_TIME:
|
| + sleep_time = MAX_SLEEP_TIME
|
| + return (exit_code, timed_out)
|
|
|
|
|
| def PrintError(string):
|
| @@ -142,11 +139,9 @@ def Execute(args, verbose=False, timeout=None):
|
| stdout=fd_out,
|
| stderr=fd_err
|
| )
|
| - except KeyboardInterrupt:
|
| - raise
|
| - except:
|
| - raise
|
| finally:
|
| + # TODO(machenbach): A keyboard interrupt before the assignment to
|
| + # fd_out|err can lead to reference errors here.
|
| os.close(fd_out)
|
| os.close(fd_err)
|
| out = file(outname).read()
|
|
|