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

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/views/printing.py

Issue 1783073002: Run auto-formatter on files in webkitpy/layout_tests/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ran yapf -i --style '{based_on_style: pep8, column_limit: 132}' then did manual fix-up Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 # Copyright (C) 2010, 2012 Google Inc. All rights reserved. 1 # Copyright (C) 2010, 2012 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
11 # in the documentation and/or other materials provided with the 11 # in the documentation and/or other materials provided with the
12 # distribution. 12 # distribution.
13 # * Neither the name of Google Inc. nor the names of its 13 # * Neither the name of Google Inc. nor the names of its
14 # contributors may be used to endorse or promote products derived from 14 # contributors may be used to endorse or promote products derived from
15 # this software without specific prior written permission. 15 # this software without specific prior written permission.
16 # 16 #
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 """Package that handles non-debug, non-file output for run-webkit-tests.""" 28 """Package that handles non-debug, non-file output for run-webkit-tests."""
30 29
31 import math 30 import math
32 import optparse 31 import optparse
33 32
34 from webkitpy.tool import grammar 33 from webkitpy.tool import grammar
35 from webkitpy.layout_tests.models import test_expectations 34 from webkitpy.layout_tests.models import test_expectations
36 from webkitpy.layout_tests.models.test_expectations import TestExpectations, Tes tExpectationParser 35 from webkitpy.layout_tests.models.test_expectations import TestExpectations, Tes tExpectationParser
37 from webkitpy.layout_tests.views.metered_stream import MeteredStream 36 from webkitpy.layout_tests.views.metered_stream import MeteredStream
38 37
39
40 NUM_SLOW_TESTS_TO_LOG = 10 38 NUM_SLOW_TESTS_TO_LOG = 10
41 39
42 40
43 def print_options(): 41 def print_options():
44 return [ 42 return [
45 optparse.make_option('--debug-rwt-logging', action='store_true', default =False, 43 optparse.make_option('--debug-rwt-logging',
44 action='store_true',
45 default=False,
46 help='print timestamps and debug information for ru n-webkit-tests itself'), 46 help='print timestamps and debug information for ru n-webkit-tests itself'),
47 optparse.make_option('--details', action='store_true', default=False, 47 optparse.make_option('--details',
48 action='store_true',
49 default=False,
48 help='print detailed results for every test'), 50 help='print detailed results for every test'),
49 optparse.make_option('-q', '--quiet', action='store_true', default=False , 51 optparse.make_option('-q',
52 '--quiet',
53 action='store_true',
54 default=False,
50 help='run quietly (errors, warnings, and progress o nly)'), 55 help='run quietly (errors, warnings, and progress o nly)'),
51 optparse.make_option('--timing', action='store_true', default=False, 56 optparse.make_option('--timing',
57 action='store_true',
58 default=False,
52 help='display test times (summary plus per-test w/ --verbose)'), 59 help='display test times (summary plus per-test w/ --verbose)'),
53 optparse.make_option('-v', '--verbose', action='store_true', default=Fal se, 60 optparse.make_option('-v',
61 '--verbose',
62 action='store_true',
63 default=False,
54 help='print a summarized result for every test (one line per test)'), 64 help='print a summarized result for every test (one line per test)'),
55 ] 65 ]
56 66
57 67
58 class Printer(object): 68 class Printer(object):
59 """Class handling all non-debug-logging printing done by run-webkit-tests."" " 69 """Class handling all non-debug-logging printing done by run-webkit-tests."" "
60 70
61 def __init__(self, port, options, regular_output, logger=None): 71 def __init__(self, port, options, regular_output, logger=None):
62 self.num_completed = 0 72 self.num_completed = 0
63 self.num_tests = 0 73 self.num_tests = 0
64 self._port = port 74 self._port = port
65 self._options = options 75 self._options = options
66 self._meter = MeteredStream(regular_output, options.debug_rwt_logging, l ogger=logger, 76 self._meter = MeteredStream(regular_output,
77 options.debug_rwt_logging,
78 logger=logger,
67 number_of_columns=self._port.host.platform.t erminal_width()) 79 number_of_columns=self._port.host.platform.t erminal_width())
68 self._running_tests = [] 80 self._running_tests = []
69 self._completed_tests = [] 81 self._completed_tests = []
70 82
71 def cleanup(self): 83 def cleanup(self):
72 self._meter.cleanup() 84 self._meter.cleanup()
73 85
74 def __del__(self): 86 def __del__(self):
75 self.cleanup() 87 self.cleanup()
76 88
(...skipping 11 matching lines...) Expand all
88 fallback_path = [fs.split(x)[1] for x in self._port.baseline_search_path ()] 100 fallback_path = [fs.split(x)[1] for x in self._port.baseline_search_path ()]
89 self._print_default("Baseline search path: %s -> generic" % " -> ".join( fallback_path)) 101 self._print_default("Baseline search path: %s -> generic" % " -> ".join( fallback_path))
90 102
91 self._print_default("Using %s build" % self._options.configuration) 103 self._print_default("Using %s build" % self._options.configuration)
92 if self._options.pixel_tests: 104 if self._options.pixel_tests:
93 self._print_default("Pixel tests enabled") 105 self._print_default("Pixel tests enabled")
94 else: 106 else:
95 self._print_default("Pixel tests disabled") 107 self._print_default("Pixel tests disabled")
96 108
97 self._print_default("Regular timeout: %s, slow test timeout: %s" % 109 self._print_default("Regular timeout: %s, slow test timeout: %s" %
98 (self._options.time_out_ms, self._options.slow_time_out_ms)) 110 (self._options.time_out_ms, self._options.slow_time_ out_ms))
99 111
100 self._print_default('Command line: ' + ' '.join(self._port.driver_cmd_li ne())) 112 self._print_default('Command line: ' + ' '.join(self._port.driver_cmd_li ne()))
101 self._print_default('') 113 self._print_default('')
102 114
103 def print_found(self, num_all_test_files, num_to_run, repeat_each, iteration s): 115 def print_found(self, num_all_test_files, num_to_run, repeat_each, iteration s):
104 found_str = 'Found %s; running %d' % (grammar.pluralize('test', num_all_ test_files), num_to_run) 116 found_str = 'Found %s; running %d' % (grammar.pluralize('test', num_all_ test_files), num_to_run)
105 if repeat_each * iterations > 1: 117 if repeat_each * iterations > 1:
106 found_str += ' (%d times each: --repeat-each=%d --iterations=%d)' % (repeat_each * iterations, repeat_each, iterations) 118 found_str += ' (%d times each: --repeat-each=%d --iterations=%d)' % (repeat_each * iterations, repeat_each, iterations)
107 found_str += ', skipping %d' % (num_all_test_files - num_to_run) 119 found_str += ', skipping %d' % (num_all_test_files - num_to_run)
108 self._print_default(found_str + '.') 120 self._print_default(found_str + '.')
(...skipping 14 matching lines...) Expand all
123 self._print_debug("(%d shards; %d locked)." % (num_shards, num_locke d_shards)) 135 self._print_debug("(%d shards; %d locked)." % (num_shards, num_locke d_shards))
124 self._print_default('') 136 self._print_default('')
125 137
126 def _print_expected_results_of_type(self, run_results, result_type, result_t ype_str, tests_with_result_type_callback): 138 def _print_expected_results_of_type(self, run_results, result_type, result_t ype_str, tests_with_result_type_callback):
127 tests = tests_with_result_type_callback(result_type) 139 tests = tests_with_result_type_callback(result_type)
128 now = run_results.tests_by_timeline[test_expectations.NOW] 140 now = run_results.tests_by_timeline[test_expectations.NOW]
129 wontfix = run_results.tests_by_timeline[test_expectations.WONTFIX] 141 wontfix = run_results.tests_by_timeline[test_expectations.WONTFIX]
130 142
131 # We use a fancy format string in order to print the data out in a 143 # We use a fancy format string in order to print the data out in a
132 # nicely-aligned table. 144 # nicely-aligned table.
133 fmtstr = ("Expect: %%5d %%-8s (%%%dd now, %%%dd wontfix)" 145 fmtstr = ("Expect: %%5d %%-8s (%%%dd now, %%%dd wontfix)" % (self._num_d igits(now), self._num_digits(wontfix)))
134 % (self._num_digits(now), self._num_digits(wontfix)))
135 self._print_debug(fmtstr % (len(tests), result_type_str, len(tests & now ), len(tests & wontfix))) 146 self._print_debug(fmtstr % (len(tests), result_type_str, len(tests & now ), len(tests & wontfix)))
136 147
137 def _num_digits(self, num): 148 def _num_digits(self, num):
138 ndigits = 1 149 ndigits = 1
139 if len(num): 150 if len(num):
140 ndigits = int(math.log10(len(num))) + 1 151 ndigits = int(math.log10(len(num))) + 1
141 return ndigits 152 return ndigits
142 153
143 def print_results(self, run_time, run_results, summarized_results): 154 def print_results(self, run_time, run_results, summarized_results):
144 self._print_timing_statistics(run_time, run_results) 155 self._print_timing_statistics(run_time, run_results)
(...skipping 13 matching lines...) Expand all
158 self._print_debug("Thread timing:") 169 self._print_debug("Thread timing:")
159 stats = {} 170 stats = {}
160 cuml_time = 0 171 cuml_time = 0
161 for result in run_results.results_by_name.values(): 172 for result in run_results.results_by_name.values():
162 stats.setdefault(result.worker_name, {'num_tests': 0, 'total_time': 0}) 173 stats.setdefault(result.worker_name, {'num_tests': 0, 'total_time': 0})
163 stats[result.worker_name]['num_tests'] += 1 174 stats[result.worker_name]['num_tests'] += 1
164 stats[result.worker_name]['total_time'] += result.total_run_time 175 stats[result.worker_name]['total_time'] += result.total_run_time
165 cuml_time += result.total_run_time 176 cuml_time += result.total_run_time
166 177
167 for worker_name in stats: 178 for worker_name in stats:
168 self._print_debug(" %10s: %5d tests, %6.2f secs" % (worker_name, stats[worker_name]['num_tests'], stats[worker_name]['total_time'])) 179 self._print_debug(" %10s: %5d tests, %6.2f secs" % (worker_name, stats[
180 worker_name]['num_tests'], stats[worker_name]['total_time']))
169 self._print_debug(" %6.2f cumulative, %6.2f optimal" % (cuml_time, cum l_time / num_workers)) 181 self._print_debug(" %6.2f cumulative, %6.2f optimal" % (cuml_time, cum l_time / num_workers))
170 self._print_debug("") 182 self._print_debug("")
171 183
172 def _print_aggregate_test_statistics(self, run_results): 184 def _print_aggregate_test_statistics(self, run_results):
173 times_for_dump_render_tree = [result.test_run_time for result in run_res ults.results_by_name.values()] 185 times_for_dump_render_tree = [result.test_run_time for result in run_res ults.results_by_name.values()]
174 self._print_statistics_for_test_timings("PER TEST TIME IN TESTSHELL (sec onds):", times_for_dump_render_tree) 186 self._print_statistics_for_test_timings("PER TEST TIME IN TESTSHELL (sec onds):", times_for_dump_render_tree)
175 187
176 def _print_individual_test_times(self, run_results): 188 def _print_individual_test_times(self, run_results):
177 # Reverse-sort by the time spent in the driver. 189 # Reverse-sort by the time spent in the driver.
178 190
179 individual_test_timings = sorted(run_results.results_by_name.values(), k ey=lambda result: result.test_run_time, reverse=True) 191 individual_test_timings = sorted(run_results.results_by_name.values(),
192 key=lambda result: result.test_run_time ,
193 reverse=True)
180 num_printed = 0 194 num_printed = 0
181 slow_tests = [] 195 slow_tests = []
182 timeout_or_crash_tests = [] 196 timeout_or_crash_tests = []
183 unexpected_slow_tests = [] 197 unexpected_slow_tests = []
184 for test_tuple in individual_test_timings: 198 for test_tuple in individual_test_timings:
185 test_name = test_tuple.test_name 199 test_name = test_tuple.test_name
186 is_timeout_crash_or_slow = False 200 is_timeout_crash_or_slow = False
187 if test_name in run_results.slow_tests: 201 if test_name in run_results.slow_tests:
188 is_timeout_crash_or_slow = True 202 is_timeout_crash_or_slow = True
189 slow_tests.append(test_tuple) 203 slow_tests.append(test_tuple)
190 204
191 if test_name in run_results.failures_by_name: 205 if test_name in run_results.failures_by_name:
192 result = run_results.results_by_name[test_name].type 206 result = run_results.results_by_name[test_name].type
193 if (result == test_expectations.TIMEOUT or 207 if (result == test_expectations.TIMEOUT or result == test_expect ations.CRASH):
194 result == test_expectations.CRASH):
195 is_timeout_crash_or_slow = True 208 is_timeout_crash_or_slow = True
196 timeout_or_crash_tests.append(test_tuple) 209 timeout_or_crash_tests.append(test_tuple)
197 210
198 if (not is_timeout_crash_or_slow and num_printed < NUM_SLOW_TESTS_TO _LOG): 211 if (not is_timeout_crash_or_slow and num_printed < NUM_SLOW_TESTS_TO _LOG):
199 num_printed = num_printed + 1 212 num_printed = num_printed + 1
200 unexpected_slow_tests.append(test_tuple) 213 unexpected_slow_tests.append(test_tuple)
201 214
202 self._print_debug("") 215 self._print_debug("")
203 if unexpected_slow_tests: 216 if unexpected_slow_tests:
204 self._print_test_list_timing("%s slowest tests that are not marked a s SLOW and did not timeout/crash:" % 217 self._print_test_list_timing("%s slowest tests that are not marked a s SLOW and did not timeout/crash:" %
205 NUM_SLOW_TESTS_TO_LOG, unexpected_slow_tests) 218 NUM_SLOW_TESTS_TO_LOG, unexpected_slow_ tests)
206 self._print_debug("") 219 self._print_debug("")
207 220
208 if slow_tests: 221 if slow_tests:
209 self._print_test_list_timing("Tests marked as SLOW:", slow_tests) 222 self._print_test_list_timing("Tests marked as SLOW:", slow_tests)
210 self._print_debug("") 223 self._print_debug("")
211 224
212 if timeout_or_crash_tests: 225 if timeout_or_crash_tests:
213 self._print_test_list_timing("Tests that timed out or crashed:", tim eout_or_crash_tests) 226 self._print_test_list_timing("Tests that timed out or crashed:", tim eout_or_crash_tests)
214 self._print_debug("") 227 self._print_debug("")
215 228
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 incomplete_str = '' 308 incomplete_str = ''
296 if incomplete: 309 if incomplete:
297 self._print_default("") 310 self._print_default("")
298 incomplete_str = " (%d didn't run)" % incomplete 311 incomplete_str = " (%d didn't run)" % incomplete
299 312
300 if self._options.verbose or self._options.debug_rwt_logging or unexpecte d: 313 if self._options.verbose or self._options.debug_rwt_logging or unexpecte d:
301 self.writeln("") 314 self.writeln("")
302 315
303 expected_summary_str = '' 316 expected_summary_str = ''
304 if run_results.expected_failures > 0: 317 if run_results.expected_failures > 0:
305 expected_summary_str = " (%d passed, %d didn't)" % (expected - run_r esults.expected_failures, run_results.expected_failures) 318 expected_summary_str = " (%d passed, %d didn't)" % (expected - run_r esults.expected_failures,
319 run_results.expe cted_failures)
306 320
307 summary = '' 321 summary = ''
308 if unexpected == 0: 322 if unexpected == 0:
309 if expected == total: 323 if expected == total:
310 if expected > 1: 324 if expected > 1:
311 summary = "All %d tests ran as expected%s%s." % (expected, e xpected_summary_str, timing_summary) 325 summary = "All %d tests ran as expected%s%s." % (expected, e xpected_summary_str, timing_summary)
312 else: 326 else:
313 summary = "The test ran as expected%s%s." % (expected_summar y_str, timing_summary) 327 summary = "The test ran as expected%s%s." % (expected_summar y_str, timing_summary)
314 else: 328 else:
315 summary = "%s ran as expected%s%s%s." % (grammar.pluralize('test ', expected), expected_summary_str, incomplete_str, timing_summary) 329 summary = "%s ran as expected%s%s%s." % (grammar.pluralize('test ', expected), expected_summary_str, incomplete_str,
330 timing_summary)
316 else: 331 else:
317 summary = "%s ran as expected%s, %d didn't%s%s:" % (grammar.pluraliz e('test', expected), expected_summary_str, unexpected, incomplete_str, timing_su mmary) 332 summary = "%s ran as expected%s, %d didn't%s%s:" % (grammar.pluraliz e('test', expected), expected_summary_str,
333 unexpected, inco mplete_str, timing_summary)
318 334
319 self._print_quiet(summary) 335 self._print_quiet(summary)
320 self._print_quiet("") 336 self._print_quiet("")
321 337
322 def _test_status_line(self, test_name, suffix): 338 def _test_status_line(self, test_name, suffix):
323 format_string = '[%d/%d] %s%s' 339 format_string = '[%d/%d] %s%s'
324 status_line = format_string % (self.num_completed, self.num_tests, test_ name, suffix) 340 status_line = format_string % (self.num_completed, self.num_tests, test_ name, suffix)
325 if len(status_line) > self._meter.number_of_columns(): 341 if len(status_line) > self._meter.number_of_columns():
326 overflow_columns = len(status_line) - self._meter.number_of_columns( ) 342 overflow_columns = len(status_line) - self._meter.number_of_columns( )
327 ellipsis = '...' 343 ellipsis = '...'
(...skipping 16 matching lines...) Expand all
344 if self._options.verbose: 360 if self._options.verbose:
345 write = self._meter.write_update 361 write = self._meter.write_update
346 else: 362 else:
347 write = self._meter.write_throttled_update 363 write = self._meter.write_throttled_update
348 write(self._test_status_line(test_name, suffix)) 364 write(self._test_status_line(test_name, suffix))
349 365
350 def print_finished_test(self, result, expected, exp_str, got_str): 366 def print_finished_test(self, result, expected, exp_str, got_str):
351 self.num_completed += 1 367 self.num_completed += 1
352 test_name = result.test_name 368 test_name = result.test_name
353 369
354 result_message = self._result_message(result.type, result.failures, expe cted, 370 result_message = self._result_message(result.type, result.failures, expe cted, self._options.timing, result.test_run_time)
355 self._options.timing, result.test_ run_time)
356 371
357 if self._options.details: 372 if self._options.details:
358 self._print_test_trace(result, exp_str, got_str) 373 self._print_test_trace(result, exp_str, got_str)
359 elif self._options.verbose or not expected: 374 elif self._options.verbose or not expected:
360 self.writeln(self._test_status_line(test_name, result_message)) 375 self.writeln(self._test_status_line(test_name, result_message))
361 elif self.num_completed == self.num_tests: 376 elif self.num_completed == self.num_tests:
362 self._meter.write_update('') 377 self._meter.write_update('')
363 else: 378 else:
364 if test_name == self._running_tests[0]: 379 if test_name == self._running_tests[0]:
365 self._completed_tests.insert(0, [test_name, result_message]) 380 self._completed_tests.insert(0, [test_name, result_message])
(...skipping 24 matching lines...) Expand all
390 self._print_default(' base: %s' % base) 405 self._print_default(' base: %s' % base)
391 self._print_default(' args: %s' % args) 406 self._print_default(' args: %s' % args)
392 self._print_default(' reference_args: %s' % reference_args) 407 self._print_default(' reference_args: %s' % reference_args)
393 408
394 references = self._port.reference_files(test_name) 409 references = self._port.reference_files(test_name)
395 if references: 410 if references:
396 for _, filename in references: 411 for _, filename in references:
397 self._print_default(' ref: %s' % self._port.relative_test_filen ame(filename)) 412 self._print_default(' ref: %s' % self._port.relative_test_filen ame(filename))
398 else: 413 else:
399 for extension in ('.txt', '.png', '.wav'): 414 for extension in ('.txt', '.png', '.wav'):
400 self._print_baseline(test_name, extension) 415 self._print_baseline(test_name, extension)
401 416
402 self._print_default(' exp: %s' % exp_str) 417 self._print_default(' exp: %s' % exp_str)
403 self._print_default(' got: %s' % got_str) 418 self._print_default(' got: %s' % got_str)
404 self._print_default(' took: %-.3f' % result.test_run_time) 419 self._print_default(' took: %-.3f' % result.test_run_time)
405 self._print_default('') 420 self._print_default('')
406 421
407 def _print_baseline(self, test_name, extension): 422 def _print_baseline(self, test_name, extension):
408 baseline = self._port.expected_filename(test_name, extension) 423 baseline = self._port.expected_filename(test_name, extension)
409 if self._port._filesystem.exists(baseline): 424 if self._port._filesystem.exists(baseline):
410 relpath = self._port.relative_test_filename(baseline) 425 relpath = self._port.relative_test_filename(baseline)
(...skipping 16 matching lines...) Expand all
427 self._meter.write_throttled_update(msg) 442 self._meter.write_throttled_update(msg)
428 443
429 def write_update(self, msg): 444 def write_update(self, msg):
430 self._meter.write_update(msg) 445 self._meter.write_update(msg)
431 446
432 def writeln(self, msg): 447 def writeln(self, msg):
433 self._meter.writeln(msg) 448 self._meter.writeln(msg)
434 449
435 def flush(self): 450 def flush(self):
436 self._meter.flush() 451 self._meter.flush()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698