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

Side by Side Diff: tools/rebaseline.py

Issue 24195018: Add an option to rebaseline.py to mark tests as ignore-failure. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 ''' 3 '''
4 Copyright 2012 Google Inc. 4 Copyright 2012 Google Inc.
5 5
6 Use of this source code is governed by a BSD-style license that can be 6 Use of this source code is governed by a BSD-style license that can be
7 found in the LICENSE file. 7 found in the LICENSE file.
8 ''' 8 '''
9 9
10 ''' 10 '''
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 # rebaseline whatever configs the JSON results summary file tells 163 # rebaseline whatever configs the JSON results summary file tells
164 # us to 164 # us to
165 # add_new: if True, add expectations for tests which don't have any yet 165 # add_new: if True, add expectations for tests which don't have any yet
166 # bugs: optional list of bug numbers which pertain to these expectations 166 # bugs: optional list of bug numbers which pertain to these expectations
167 # notes: free-form text notes to add to all updated expectations 167 # notes: free-form text notes to add to all updated expectations
168 # mark_unreviewed: if True, mark these expectations as NOT having been 168 # mark_unreviewed: if True, mark these expectations as NOT having been
169 # reviewed by a human; otherwise, leave that field blank. 169 # reviewed by a human; otherwise, leave that field blank.
170 # Currently, there is no way to make this script mark 170 # Currently, there is no way to make this script mark
171 # expectations as reviewed-by-human=True. 171 # expectations as reviewed-by-human=True.
172 # TODO(epoger): Add that capability to a review tool. 172 # TODO(epoger): Add that capability to a review tool.
173 # mark_ignore_failure: if True, mark failures of a given test as being
174 # ignored.
173 def __init__(self, expectations_root, expectations_input_filename, 175 def __init__(self, expectations_root, expectations_input_filename,
174 expectations_output_filename, actuals_base_url, 176 expectations_output_filename, actuals_base_url,
175 actuals_filename, exception_handler, 177 actuals_filename, exception_handler,
176 tests=None, configs=None, add_new=False, bugs=None, notes=None, 178 tests=None, configs=None, add_new=False, bugs=None, notes=None,
177 mark_unreviewed=None, from_trybot=False): 179 mark_unreviewed=None, mark_ignore_failure=False,
180 from_trybot=False):
178 self._expectations_root = expectations_root 181 self._expectations_root = expectations_root
179 self._expectations_input_filename = expectations_input_filename 182 self._expectations_input_filename = expectations_input_filename
180 self._expectations_output_filename = expectations_output_filename 183 self._expectations_output_filename = expectations_output_filename
181 self._tests = tests 184 self._tests = tests
182 self._configs = configs 185 self._configs = configs
183 self._actuals_base_url = actuals_base_url 186 self._actuals_base_url = actuals_base_url
184 self._actuals_filename = actuals_filename 187 self._actuals_filename = actuals_filename
185 self._exception_handler = exception_handler 188 self._exception_handler = exception_handler
186 self._add_new = add_new 189 self._add_new = add_new
187 self._bugs = bugs 190 self._bugs = bugs
188 self._notes = notes 191 self._notes = notes
189 self._mark_unreviewed = mark_unreviewed 192 self._mark_unreviewed = mark_unreviewed
193 self._mark_ignore_failure = mark_ignore_failure;
190 self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN) 194 self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
191 self._using_svn = os.path.isdir(os.path.join(expectations_root, '.svn')) 195 self._using_svn = os.path.isdir(os.path.join(expectations_root, '.svn'))
192 self._from_trybot = from_trybot 196 self._from_trybot = from_trybot
193 197
194 # Executes subprocess.call(cmd). 198 # Executes subprocess.call(cmd).
195 # Raises an Exception if the command fails. 199 # Raises an Exception if the command fails.
196 def _Call(self, cmd): 200 def _Call(self, cmd):
197 if subprocess.call(cmd) != 0: 201 if subprocess.call(cmd) != 0:
198 raise _InternalException('error running command: ' + ' '.join(cmd)) 202 raise _InternalException('error running command: ' + ' '.join(cmd))
199 203
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 continue 304 continue
301 if not expected_results.get(image_name): 305 if not expected_results.get(image_name):
302 expected_results[image_name] = {} 306 expected_results[image_name] = {}
303 expected_results[image_name]\ 307 expected_results[image_name]\
304 [gm_json.JSONKEY_EXPECTEDRESULTS_ALLOWEDDIGESTS]\ 308 [gm_json.JSONKEY_EXPECTEDRESULTS_ALLOWEDDIGESTS]\
305 = [image_results] 309 = [image_results]
306 if self._mark_unreviewed: 310 if self._mark_unreviewed:
307 expected_results[image_name]\ 311 expected_results[image_name]\
308 [gm_json.JSONKEY_EXPECTEDRESULTS_REVIEWED]\ 312 [gm_json.JSONKEY_EXPECTEDRESULTS_REVIEWED]\
309 = False 313 = False
314 if self._mark_ignore_failure:
315 expected_results[image_name]\
316 [gm_json.JSONKEY_EXPECTEDRESULTS_IGNOREFAILURE]\
317 = True
310 if self._bugs: 318 if self._bugs:
311 expected_results[image_name]\ 319 expected_results[image_name]\
312 [gm_json.JSONKEY_EXPECTEDRESULTS_BUGS]\ 320 [gm_json.JSONKEY_EXPECTEDRESULTS_BUGS]\
313 = self._bugs 321 = self._bugs
314 if self._notes: 322 if self._notes:
315 expected_results[image_name]\ 323 expected_results[image_name]\
316 [gm_json.JSONKEY_EXPECTEDRESULTS_NOTES]\ 324 [gm_json.JSONKEY_EXPECTEDRESULTS_NOTES]\
317 = self._notes 325 = self._notes
318 326
319 # Write out updated expectations. 327 # Write out updated expectations.
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 parser.add_argument('--tests', metavar='TEST', nargs='+', 399 parser.add_argument('--tests', metavar='TEST', nargs='+',
392 help=('which tests to rebaseline, e.g. ' 400 help=('which tests to rebaseline, e.g. '
393 '"--tests aaclip bigmatrix", as a filter over the ' 401 '"--tests aaclip bigmatrix", as a filter over the '
394 'full set of results in ACTUALS_FILENAME; if ' 402 'full set of results in ACTUALS_FILENAME; if '
395 'unspecified, rebaseline *all* tests that are ' 403 'unspecified, rebaseline *all* tests that are '
396 'available.')) 404 'available.'))
397 parser.add_argument('--unreviewed', action='store_true', 405 parser.add_argument('--unreviewed', action='store_true',
398 help=('mark all expectations modified by this run as ' 406 help=('mark all expectations modified by this run as '
399 '"%s": False' % 407 '"%s": False' %
400 gm_json.JSONKEY_EXPECTEDRESULTS_REVIEWED)) 408 gm_json.JSONKEY_EXPECTEDRESULTS_REVIEWED))
409 parser.add_argument('--ignore-failure', action='store_true',
410 help=('mark all expectations modified by this run as '
411 '"%s": True' %
412 gm_json.JSONKEY_ACTUALRESULTS_FAILUREIGNORED))
401 parser.add_argument('--from-trybot', action='store_true', 413 parser.add_argument('--from-trybot', action='store_true',
402 help=('pull the actual-results.json file from the ' 414 help=('pull the actual-results.json file from the '
403 'corresponding trybot, rather than the main builder')) 415 'corresponding trybot, rather than the main builder'))
404 args = parser.parse_args() 416 args = parser.parse_args()
405 exception_handler = ExceptionHandler( 417 exception_handler = ExceptionHandler(
406 keep_going_on_failure=args.keep_going_on_failure) 418 keep_going_on_failure=args.keep_going_on_failure)
407 if args.builders: 419 if args.builders:
408 builders = args.builders 420 builders = args.builders
409 missing_json_is_fatal = True 421 missing_json_is_fatal = True
410 else: 422 else:
(...skipping 12 matching lines...) Expand all
423 expectations_root=args.expectations_root, 435 expectations_root=args.expectations_root,
424 expectations_input_filename=args.expectations_filename, 436 expectations_input_filename=args.expectations_filename,
425 expectations_output_filename=(args.expectations_filename_output or 437 expectations_output_filename=(args.expectations_filename_output or
426 args.expectations_filename), 438 args.expectations_filename),
427 tests=args.tests, configs=args.configs, 439 tests=args.tests, configs=args.configs,
428 actuals_base_url=args.actuals_base_url, 440 actuals_base_url=args.actuals_base_url,
429 actuals_filename=args.actuals_filename, 441 actuals_filename=args.actuals_filename,
430 exception_handler=exception_handler, 442 exception_handler=exception_handler,
431 add_new=args.add_new, bugs=args.bugs, notes=args.notes, 443 add_new=args.add_new, bugs=args.bugs, notes=args.notes,
432 mark_unreviewed=args.unreviewed, 444 mark_unreviewed=args.unreviewed,
445 mark_ignore_failure=args.ignore_failure,
433 from_trybot=args.from_trybot) 446 from_trybot=args.from_trybot)
434 try: 447 try:
435 rebaseliner.RebaselineSubdir(builder=builder) 448 rebaseliner.RebaselineSubdir(builder=builder)
436 except: 449 except:
437 exception_handler.RaiseExceptionOrContinue() 450 exception_handler.RaiseExceptionOrContinue()
438 else: 451 else:
439 try: 452 try:
440 raise _InternalException('expectations_json_file %s not found' % 453 raise _InternalException('expectations_json_file %s not found' %
441 expectations_json_file) 454 expectations_json_file)
442 except: 455 except:
443 exception_handler.RaiseExceptionOrContinue() 456 exception_handler.RaiseExceptionOrContinue()
444 457
445 exception_handler.ReportAllFailures() 458 exception_handler.ReportAllFailures()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698