Chromium Code Reviews| Index: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py |
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py |
| index 9147c2ccdadea819aa98528973f160c6b854e8cd..a3ba3976345c42c69095344746b652c859349ab6 100644 |
| --- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py |
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/port/linux.py |
| @@ -27,6 +27,7 @@ |
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| import logging |
| +import tempfile |
| from webkitpy.layout_tests.breakpad.dump_reader_multipart import DumpReaderLinux |
| from webkitpy.layout_tests.port import base |
| @@ -67,6 +68,8 @@ class LinuxPort(base.Port): |
| self._original_home = None |
| self._original_display = None |
| self._xvfb_process = None |
| + self._xvfb_stdout = None |
| + self._xvfb_stderr = None |
| def additional_driver_flag(self): |
| flags = super(LinuxPort, self).additional_driver_flag() |
| @@ -153,9 +156,11 @@ class LinuxPort(base.Port): |
| return |
| _log.info('Starting Xvfb with display "%s".', display) |
| + self._xvfb_stdout = tempfile.NamedTemporaryFile(delete=False) |
| + self._xvfb_stderr = tempfile.NamedTemporaryFile(delete=False) |
| self._xvfb_process = self.host.executive.popen( |
| ['Xvfb', display, '-screen', '0', '1280x800x24', '-ac', '-dpi', '96'], |
| - stderr=self.host.executive.DEVNULL) |
| + stdout=self._xvfb_stdout, stderr=self._xvfb_stderr) |
| # By setting DISPLAY here, the individual worker processes will |
| # get the right DISPLAY. Note, if this environment could be passed |
| @@ -167,6 +172,12 @@ class LinuxPort(base.Port): |
| # https://docs.python.org/2/library/subprocess.html#subprocess.Popen.poll |
| if self._xvfb_process.poll() is not None: |
|
mithro
2017/04/26 01:57:17
Can you just call _stop_xvfb here? Or maybe share
Dirk Pranke
2017/04/26 02:03:00
Yeah, I should be able to refactor it.
|
| _log.warn('Failed to start Xvfb on display "%s."', display) |
| + self._xvfb_stdout.close() |
| + self._xvfb_stderr.close() |
| + _log.warn('Xvfb stdout:\n%s', self.host.filesystem.read_text_file(self._xvfb_stdout.name)) |
| + _log.warn('Xvfb stderr:\n%s', self.host.filesystem.read_text_file(self._xvfb_stderr.name)) |
| + self.host.filesystem.remove(self._xvfb_stdout.name) |
| + self.host.filesystem.remove(self._xvfb_stderr.name) |
| def _find_display(self): |
| """Tries to find a free X display, looping if necessary.""" |
| @@ -182,11 +193,20 @@ class LinuxPort(base.Port): |
| def _stop_xvfb(self): |
| if self._original_display: |
| self.host.environ['DISPLAY'] = self._original_display |
| + if self._xvfb_stdout: |
| + self._xvfb_stdout.close() |
| + if self._xvfb_stderr: |
| + self._xvfb_stderr.close() |
| if not self._xvfb_process: |
| return |
| _log.debug('Killing Xvfb process pid %d.', self._xvfb_process.pid) |
| self._xvfb_process.kill() |
| self._xvfb_process.wait() |
| + _log.warn('Xvfb stdout:\n%s', self.host.filesystem.read_text_file(self._xvfb_stdout.name)) |
| + _log.warn('Xvfb stderr:\n%s', self.host.filesystem.read_text_file(self._xvfb_stderr.name)) |
| + self.host.filesystem.remove(self._xvfb_stdout.name) |
| + self.host.filesystem.remove(self._xvfb_stderr.name) |
| + |
| def _path_to_driver(self, target=None): |