| Index: Tools/Scripts/webkitpy/layout_tests/port/server_process.py
|
| diff --git a/Tools/Scripts/webkitpy/layout_tests/port/server_process.py b/Tools/Scripts/webkitpy/layout_tests/port/server_process.py
|
| index f9ec1a7dc54de97f04c8820c79ed540e08faf48d..22c017a901ecdc34187dc53fbe4cbcc4b483d992 100644
|
| --- a/Tools/Scripts/webkitpy/layout_tests/port/server_process.py
|
| +++ b/Tools/Scripts/webkitpy/layout_tests/port/server_process.py
|
| @@ -72,7 +72,9 @@ def quote_data(data):
|
| lines.append(l)
|
| return lines
|
|
|
| +
|
| class ServerProcess(object):
|
| +
|
| """This class provides a wrapper around a subprocess that
|
| implements a simple request/response usage model. The primary benefit
|
| is that reading responses takes a deadline, so that we don't ever block
|
| @@ -127,21 +129,21 @@ class ServerProcess(object):
|
|
|
| def _start(self):
|
| if self._proc:
|
| - raise ValueError("%s already running" % self._name)
|
| + raise ValueError('%s already running' % self._name)
|
| self._reset()
|
| # close_fds is a workaround for http://bugs.python.org/issue2320
|
| close_fds = not self._host.platform.is_win()
|
| if self._logging:
|
| env_str = ''
|
| if self._env:
|
| - env_str += '\n'.join("%s=%s" % (k, v) for k, v in self._env.items()) + '\n'
|
| + env_str += '\n'.join('%s=%s' % (k, v) for k, v in self._env.items()) + '\n'
|
| _log.info('CMD: \n%s%s\n', env_str, _quote_cmd(self._cmd))
|
| self._proc = self._host.executive.popen(self._cmd, stdin=self._host.executive.PIPE,
|
| - stdout=self._host.executive.PIPE,
|
| - stderr=self._host.executive.PIPE,
|
| - close_fds=close_fds,
|
| - env=self._env,
|
| - universal_newlines=self._universal_newlines)
|
| + stdout=self._host.executive.PIPE,
|
| + stderr=self._host.executive.PIPE,
|
| + close_fds=close_fds,
|
| + env=self._env,
|
| + universal_newlines=self._universal_newlines)
|
| self._pid = self._proc.pid
|
| fd = self._proc.stdout.fileno()
|
| if not self._use_win32_apis:
|
| @@ -178,7 +180,7 @@ class ServerProcess(object):
|
| try:
|
| self._log_data(' IN', bytes)
|
| self._proc.stdin.write(bytes)
|
| - except IOError, e:
|
| + except IOError as e:
|
| self.stop(0.0)
|
| # stop() calls _reset(), so we have to set crashed to True after calling stop().
|
| self._crashed = True
|
| @@ -215,7 +217,8 @@ class ServerProcess(object):
|
| return None # Instructs the caller to keep waiting.
|
|
|
| return_value = self._read(deadline, retrieve_bytes_from_buffers)
|
| - # FIXME: This is a bit of a hack around the fact that _read normally only returns one value, but this caller wants it to return two.
|
| + # FIXME: This is a bit of a hack around the fact that _read normally only
|
| + # returns one value, but this caller wants it to return two.
|
| if return_value is None:
|
| return None, None
|
| return return_value
|
| @@ -268,7 +271,7 @@ class ServerProcess(object):
|
| select_fds = (out_fd, err_fd)
|
| try:
|
| read_fds, _, _ = select.select(select_fds, [], select_fds, max(deadline - time.time(), 0))
|
| - except select.error, e:
|
| + except select.error as e:
|
| # We can ignore EINVAL since it's likely the process just crashed and we'll
|
| # figure that out the next time through the loop in _read().
|
| if e.args[0] == errno.EINVAL:
|
| @@ -294,7 +297,7 @@ class ServerProcess(object):
|
| self._crashed = True
|
| self._log_data('ERR', data)
|
| self._error += data
|
| - except IOError, e:
|
| + except IOError as e:
|
| # We can ignore the IOErrors because we will detect if the subporcess crashed
|
| # the next time through the loop in _read()
|
| pass
|
| @@ -327,7 +330,7 @@ class ServerProcess(object):
|
| if avail > 0:
|
| _, buf = win32file.ReadFile(handle, avail, None)
|
| return buf
|
| - except Exception, e:
|
| + except Exception as e:
|
| if e[0] not in (109, errno.ESHUTDOWN): # 109 == win32 ERROR_BROKEN_PIPE
|
| raise
|
| return None
|
|
|