mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-27 07:14:10 +08:00
android, win: Enable colored test output when available
Following the discussion at https://crrev.com/c/818125/3//COMMIT_MSG#17, this sets GTEST_COLOR=yes when running tests on an Android device via “adb” being driven from a Windows host. This is only done when standard output is attached to a console and when ENABLE_VIRTUAL_TERMINAL_PROCESSING is supported (it is on Windows 10). As usual, colored output can be suppressed by setting GTEST_COLOR=no. This is only partially tested. Instead of running on-device tests via adb, I substituted: print('\x1b[0;31mred\x1b[32mgreen\x1b[34mblue\x1b[0m') Change-Id: I3ef67f3890f18f7012111171a5e0eab4addca7b8 Reviewed-on: https://chromium-review.googlesource.com/819597 Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org>
This commit is contained in:
parent
0cc63d4a45
commit
13d0defbfb
@ -59,6 +59,44 @@ def _BinaryDirTargetOS(binary_dir):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def _EnableVTProcessingOnWindowsConsole():
|
||||||
|
"""Enables virtual terminal processing for ANSI/VT100-style escape sequences
|
||||||
|
on a Windows console attached to standard output. Returns True on success.
|
||||||
|
Returns False if standard output is not a console or if virtual terminal
|
||||||
|
processing is not supported. The feature was introduced in Windows 10.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import pywintypes
|
||||||
|
import win32console
|
||||||
|
import winerror
|
||||||
|
|
||||||
|
stdout_console = win32console.GetStdHandle(win32console.STD_OUTPUT_HANDLE)
|
||||||
|
try:
|
||||||
|
console_mode = stdout_console.GetConsoleMode()
|
||||||
|
except pywintypes.error as e:
|
||||||
|
if e.winerror == winerror.ERROR_INVALID_HANDLE:
|
||||||
|
# Standard output is not a console.
|
||||||
|
return False
|
||||||
|
raise
|
||||||
|
|
||||||
|
try:
|
||||||
|
# From <wincon.h>. This would be
|
||||||
|
# win32console.ENABLE_VIRTUAL_TERMINAL_PROCESSING, but it’s too new to be
|
||||||
|
# defined there.
|
||||||
|
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
|
||||||
|
|
||||||
|
stdout_console.SetConsoleMode(console_mode |
|
||||||
|
ENABLE_VIRTUAL_TERMINAL_PROCESSING)
|
||||||
|
except pywintypes.error as e:
|
||||||
|
if e.winerror == winerror.ERROR_INVALID_PARAMETER:
|
||||||
|
# ANSI/VT100-style escape sequence processing isn’t supported before
|
||||||
|
# Windows 10.
|
||||||
|
return False
|
||||||
|
raise
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _RunOnAndroidTarget(binary_dir, test, android_device):
|
def _RunOnAndroidTarget(binary_dir, test, android_device):
|
||||||
local_test_path = os.path.join(binary_dir, test)
|
local_test_path = os.path.join(binary_dir, test)
|
||||||
MAYBE_UNSUPPORTED_TESTS = (
|
MAYBE_UNSUPPORTED_TESTS = (
|
||||||
@ -215,10 +253,11 @@ def _RunOnAndroidTarget(binary_dir, test, android_device):
|
|||||||
gtest_color = os.environ.get('GTEST_COLOR')
|
gtest_color = os.environ.get('GTEST_COLOR')
|
||||||
if gtest_color in ('auto', None):
|
if gtest_color in ('auto', None):
|
||||||
if (sys.stdout.isatty() and
|
if (sys.stdout.isatty() and
|
||||||
os.environ.get('TERM') in
|
(os.environ.get('TERM') in
|
||||||
('xterm', 'xterm-color', 'xterm-256color', 'screen',
|
('xterm', 'xterm-color', 'xterm-256color', 'screen',
|
||||||
'screen-256color', 'tmux', 'tmux-256color', 'rxvt-unicode',
|
'screen-256color', 'tmux', 'tmux-256color', 'rxvt-unicode',
|
||||||
'rxvt-unicode-256color', 'linux', 'cygwin')):
|
'rxvt-unicode-256color', 'linux', 'cygwin') or
|
||||||
|
(IS_WINDOWS_HOST and _EnableVTProcessingOnWindowsConsole()))):
|
||||||
gtest_color = 'yes'
|
gtest_color = 'yes'
|
||||||
else:
|
else:
|
||||||
gtest_color = 'no'
|
gtest_color = 'no'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user