Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(551)

Unified Diff: Tools/Scripts/webkitpy/layout_tests/port/android.py

Issue 1169433005: Try Yet Again to handle the output we get from android in run-webkit-tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: patch for review Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Tools/Scripts/webkitpy/layout_tests/port/base.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Tools/Scripts/webkitpy/layout_tests/port/android.py
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/android.py b/Tools/Scripts/webkitpy/layout_tests/port/android.py
index 2eacecca7c807d06a274dba9cf38446eeb8b2b7c..61e3d05d53007e443a737ef54750a1f461db09a6 100644
--- a/Tools/Scripts/webkitpy/layout_tests/port/android.py
+++ b/Tools/Scripts/webkitpy/layout_tests/port/android.py
@@ -659,6 +659,12 @@ class AndroidPort(base.Port):
@staticmethod
def _android_server_process_constructor(port, server_name, cmd_line, env=None, logging=False):
+ # We need universal_newlines=True, because 'adb shell' for some unknown reason
+ # does newline conversion of unix-style LF into win-style CRLF (and we need
+ # to convert that back). This can cause headaches elsewhere because
+ # server_process' stdout and stderr are now unicode file-like objects,
+ # not binary file-like objects like all of the other ports are.
+ # FIXME: crbug.com/496983.
return server_process.ServerProcess(port, server_name, cmd_line, env,
universal_newlines=True, treat_no_data_as_crash=True, logging=logging)
@@ -1040,7 +1046,14 @@ class ChromiumAndroidDriver(driver.Driver):
for crash in crashes:
stderr += '********* [%s] breakpad minidump %s:\n%s' % (self._port.host.filesystem.basename(crash), self._android_commands.get_serial(), self._port._dump_reader._get_stack_from_dump(crash))
- return super(ChromiumAndroidDriver, self)._get_crash_log(stdout, stderr, newer_than)
+ # The parent method expects stdout and stderr to be byte streams, but
+ # since adb shell does newline conversion, we used universal_newlines
+ # when launching the processes, and hence our stdout and stderr are
+ # text objects that need to be encoded back into bytes.
+ return super(ChromiumAndroidDriver, self)._get_crash_log(
+ stdout.encode('utf8', 'replace'),
+ stderr.encode('utf8', 'replace'),
+ newer_than)
def cmd_line(self, pixel_tests, per_test_args):
# The returned command line is used to start _server_process. In our case, it's an interactive 'adb shell'.
« no previous file with comments | « no previous file | Tools/Scripts/webkitpy/layout_tests/port/base.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698