Index: Tools/Scripts/webkitpy/layout_tests/port/driver.py |
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/driver.py b/Tools/Scripts/webkitpy/layout_tests/port/driver.py |
index fd44a53e7f034f5a436922c8cea7e97bc8760213..25ccca0b7766b5e612f21c7b122b91adc0b6f0fd 100644 |
--- a/Tools/Scripts/webkitpy/layout_tests/port/driver.py |
+++ b/Tools/Scripts/webkitpy/layout_tests/port/driver.py |
@@ -178,7 +178,6 @@ class Driver(object): |
self._server_process = None |
crash_log = None |
- leak_log = None |
if crashed: |
self.error_from_test, crash_log = self._get_crash_log(text, self.error_from_test, newer_than=start_time) |
@@ -193,23 +192,18 @@ class Driver(object): |
# Print stdout and stderr to the placeholder crash log; we want as much context as possible. |
if self.error_from_test: |
crash_log += '\nstdout:\n%s\nstderr:\n%s\n' % (text, self.error_from_test) |
- elif leaked: |
- self.error_from_test, leak_log = self._get_leak_log(text, self.error_from_test, newer_than=start_time) |
return DriverOutput(text, image, actual_image_hash, audio, |
crash=crashed, test_time=time.time() - test_begin_time, measurements=self._measurements, |
timeout=timed_out, error=self.error_from_test, |
crashed_process_name=self._crashed_process_name, |
crashed_pid=self._crashed_pid, crash_log=crash_log, |
- leak=leaked, leak_log=leak_log, |
+ leak=leaked, leak_log=self._leak_log, |
pid=pid) |
def _get_crash_log(self, stdout, stderr, newer_than): |
return self._port._get_crash_log(self._crashed_process_name, self._crashed_pid, stdout, stderr, newer_than) |
- def _get_leak_log(self, stdout, stderr, newer_than): |
- return self._port._get_leak_log(self._crashed_process_name, self._crashed_pid, stdout, stderr, newer_than) |
- |
# FIXME: Seems this could just be inlined into callers. |
@classmethod |
def _command_wrapper(cls, wrapper_option): |
@@ -285,6 +279,7 @@ class Driver(object): |
self._crashed_process_name = None |
self._crashed_pid = None |
self._leaked = False |
+ self._leak_log = None |
cmd_line = self.cmd_line(pixel_tests, per_test_args) |
self._server_process = self._port._server_process_constructor(self._port, server_name, cmd_line, environment, logging=self._port.get_option("driver_logging")) |
self._server_process.start() |
@@ -370,6 +365,8 @@ class Driver(object): |
def _check_for_leak(self, error_line): |
if error_line.startswith("#LEAK - "): |
self._leaked = True |
+ match = re.match('#LEAK - (\S+) pid (\d+) (.+)\n', error_line) |
+ self._leak_log = match.group(3) |
return self._leaked |
def _command_from_driver_input(self, driver_input): |
@@ -485,7 +482,8 @@ class Driver(object): |
if err_line: |
if self._check_for_driver_crash(err_line): |
break |
- self._check_for_leak(err_line) |
+ if self._check_for_leak(err_line): |
+ break |
self.error_from_test += err_line |
block.decode_content() |