summaryrefslogtreecommitdiff
path: root/Tools/Scripts/webkitpy/test/printer.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Scripts/webkitpy/test/printer.py')
-rw-r--r--Tools/Scripts/webkitpy/test/printer.py27
1 files changed, 21 insertions, 6 deletions
diff --git a/Tools/Scripts/webkitpy/test/printer.py b/Tools/Scripts/webkitpy/test/printer.py
index 0ec3035b3..b5bea3f9f 100644
--- a/Tools/Scripts/webkitpy/test/printer.py
+++ b/Tools/Scripts/webkitpy/test/printer.py
@@ -24,7 +24,7 @@
import logging
import StringIO
-from webkitpy.common.system import outputcapture
+from webkitpy.common.system.systemhost import SystemHost
from webkitpy.layout_tests.views.metered_stream import MeteredStream
_log = logging.getLogger(__name__)
@@ -36,7 +36,7 @@ class Printer(object):
self.meter = None
self.options = options
self.num_tests = 0
- self.num_completed = 0
+ self.num_started = 0
self.num_errors = 0
self.num_failures = 0
self.running_tests = []
@@ -57,7 +57,8 @@ class Printer(object):
elif options.verbose == 2:
log_level = logging.DEBUG
- self.meter = MeteredStream(self.stream, (options.verbose == 2))
+ self.meter = MeteredStream(self.stream, (options.verbose == 2),
+ number_of_columns=SystemHost().platform.terminal_width())
handler = logging.StreamHandler(self.stream)
# We constrain the level on the handler rather than on the root
@@ -102,6 +103,8 @@ class Printer(object):
handler.addFilter(testing_filter)
if self.options.pass_through:
+ # FIXME: Can't import at top of file, as outputcapture needs unittest2
+ from webkitpy.common.system import outputcapture
outputcapture.OutputCapture.stream_wrapper = _CaptureAndPassThroughStream
def write_update(self, msg):
@@ -141,7 +144,7 @@ class Printer(object):
if self.options.timing:
suffix += ' %.4fs' % test_time
- self.num_completed += 1
+ self.num_started += 1
if test_name == self.running_tests[0]:
self.completed_tests.insert(0, [test_name, suffix, lines])
@@ -159,11 +162,23 @@ class Printer(object):
self.completed_tests = []
def _test_line(self, test_name, suffix):
- return '[%d/%d] %s%s' % (self.num_completed, self.num_tests, test_name, suffix)
+ format_string = '[%d/%d] %s%s'
+ status_line = format_string % (self.num_started, self.num_tests, test_name, suffix)
+ if len(status_line) > self.meter.number_of_columns():
+ overflow_columns = len(status_line) - self.meter.number_of_columns()
+ ellipsis = '...'
+ if len(test_name) < overflow_columns + len(ellipsis) + 3:
+ # We don't have enough space even if we elide, just show the test method name.
+ test_name = test_name.split('.')[-1]
+ else:
+ new_length = len(test_name) - overflow_columns - len(ellipsis)
+ prefix = int(new_length / 2)
+ test_name = test_name[:prefix] + ellipsis + test_name[-(new_length - prefix):]
+ return format_string % (self.num_started, self.num_tests, test_name, suffix)
def print_result(self, run_time):
write = self.meter.writeln
- write('Ran %d test%s in %.3fs' % (self.num_completed, self.num_completed != 1 and "s" or "", run_time))
+ write('Ran %d test%s in %.3fs' % (self.num_started, self.num_started != 1 and "s" or "", run_time))
if self.num_failures or self.num_errors:
write('FAILED (failures=%d, errors=%d)\n' % (self.num_failures, self.num_errors))
else: