| OLD | NEW |
| 1 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Generic presubmit checks that can be reused by other presubmit checks.""" | 5 """Generic presubmit checks that can be reused by other presubmit checks.""" |
| 6 | 6 |
| 7 ### Description checks | 7 ### Description checks |
| 8 | 8 |
| 9 def CheckChangeHasTestField(input_api, output_api): | 9 def CheckChangeHasTestField(input_api, output_api): |
| 10 """Requires that the changelist have a TEST= field.""" | 10 """Requires that the changelist have a TEST= field.""" |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 if len(bad) == 5: # Just show the first 5 errors. | 268 if len(bad) == 5: # Just show the first 5 errors. |
| 269 break | 269 break |
| 270 | 270 |
| 271 if bad: | 271 if bad: |
| 272 msg = 'Found lines longer than %s characters (first 5 shown).' % maxlen | 272 msg = 'Found lines longer than %s characters (first 5 shown).' % maxlen |
| 273 return [output_api.PresubmitPromptWarning(msg, items=bad)] | 273 return [output_api.PresubmitPromptWarning(msg, items=bad)] |
| 274 else: | 274 else: |
| 275 return [] | 275 return [] |
| 276 | 276 |
| 277 | 277 |
| 278 def CheckLicense(input_api, output_api, license, source_file_filter=None, | 278 def CheckLicense(input_api, output_api, license_re, source_file_filter=None, |
| 279 accept_empty_files=True): | 279 accept_empty_files=True): |
| 280 """Verifies the license header. | 280 """Verifies the license header. |
| 281 """ | 281 """ |
| 282 license_re = input_api.re.compile(license, input_api.re.MULTILINE) | 282 license_re = input_api.re.compile(license_re, input_api.re.MULTILINE) |
| 283 bad_files = [] | 283 bad_files = [] |
| 284 for f in input_api.AffectedSourceFiles(source_file_filter): | 284 for f in input_api.AffectedSourceFiles(source_file_filter): |
| 285 contents = input_api.ReadFile(f, 'rb') | 285 contents = input_api.ReadFile(f, 'rb') |
| 286 if accept_empty_files and not contents: | 286 if accept_empty_files and not contents: |
| 287 continue | 287 continue |
| 288 if not license_re.search(contents): | 288 if not license_re.search(contents): |
| 289 bad_files.append(f.LocalPath()) | 289 bad_files.append(f.LocalPath()) |
| 290 if bad_files: | 290 if bad_files: |
| 291 if input_api.is_committing: | 291 if input_api.is_committing: |
| 292 res_type = output_api.PresubmitPromptWarning | 292 res_type = output_api.PresubmitPromptWarning |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 return [] | 476 return [] |
| 477 # Reformat as an dict of platform: [status, url] | 477 # Reformat as an dict of platform: [status, url] |
| 478 values = dict([[v[0], [v[1], v[2]]] for v in values if len(v) == 3]) | 478 values = dict([[v[0], [v[1], v[2]]] for v in values if len(v) == 3]) |
| 479 if not values: | 479 if not values: |
| 480 # It returned useless data. | 480 # It returned useless data. |
| 481 return [output_api.PresubmitNotifyResult('Failed to parse try job results')] | 481 return [output_api.PresubmitNotifyResult('Failed to parse try job results')] |
| 482 | 482 |
| 483 for platform in platforms: | 483 for platform in platforms: |
| 484 values.setdefault(platform, ['not started', '']) | 484 values.setdefault(platform, ['not started', '']) |
| 485 message = None | 485 message = None |
| 486 non_success = [k.upper() for k,v in values.iteritems() if v[0] != 'success'] | 486 non_success = [k.upper() for k, v in values.iteritems() if v[0] != 'success'] |
| 487 if 'failure' in [v[0] for v in values.itervalues()]: | 487 if 'failure' in [v[0] for v in values.itervalues()]: |
| 488 message = 'Try job failures on %s!\n' % ', '.join(non_success) | 488 message = 'Try job failures on %s!\n' % ', '.join(non_success) |
| 489 elif non_success: | 489 elif non_success: |
| 490 message = ('Unfinished (or not even started) try jobs on ' | 490 message = ('Unfinished (or not even started) try jobs on ' |
| 491 '%s.\n') % ', '.join(non_success) | 491 '%s.\n') % ', '.join(non_success) |
| 492 if message: | 492 if message: |
| 493 message += ( | 493 message += ( |
| 494 'Is try server wrong or broken? Please notify %s. ' | 494 'Is try server wrong or broken? Please notify %s. ' |
| 495 'Thanks.\n' % owner) | 495 'Thanks.\n' % owner) |
| 496 return [output_api.PresubmitPromptWarning(message=message)] | 496 return [output_api.PresubmitPromptWarning(message=message)] |
| (...skipping 27 matching lines...) Expand all Loading... |
| 524 pending_builds_len = len(builder.get('pending_builds', [])) | 524 pending_builds_len = len(builder.get('pending_builds', [])) |
| 525 if pending_builds_len > max_pendings: | 525 if pending_builds_len > max_pendings: |
| 526 out.append('%s has %d build(s) pending' % | 526 out.append('%s has %d build(s) pending' % |
| 527 (builder_name, pending_builds_len)) | 527 (builder_name, pending_builds_len)) |
| 528 if out: | 528 if out: |
| 529 return [output_api.PresubmitPromptWarning( | 529 return [output_api.PresubmitPromptWarning( |
| 530 'Build(s) pending. It is suggested to wait that no more than %d ' | 530 'Build(s) pending. It is suggested to wait that no more than %d ' |
| 531 'builds are pending.' % max_pendings, | 531 'builds are pending.' % max_pendings, |
| 532 long_text='\n'.join(out))] | 532 long_text='\n'.join(out))] |
| 533 return [] | 533 return [] |
| OLD | NEW |