Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2012 The Chromium Authors. All rights reserved. | 1 # Copyright 2012 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 """Presubmit script for changes affecting tools/perf/. | 5 """Presubmit script for changes affecting tools/perf/. |
| 6 | 6 |
| 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| 8 for more details about the presubmit API built into depot_tools. | 8 for more details about the presubmit API built into depot_tools. |
| 9 """ | 9 """ |
| 10 | 10 |
| 11 import os | 11 import os |
| 12 import sys | 12 import sys |
| 13 | 13 |
| 14 sys.path = [os.path.join(os.pardir, 'telemetry')] + sys.path | |
|
aiolos (Not reviewing)
2015/02/24 18:53:07
PRESUBMIT scripts aren't supposed to have side eff
nednguyen
2015/02/24 19:28:33
Done.
| |
| 15 | |
| 16 from telemetry.util import cloud_storage | |
| 17 | |
| 14 PYLINT_BLACKLIST = [] | 18 PYLINT_BLACKLIST = [] |
| 15 PYLINT_DISABLED_WARNINGS = [ | 19 PYLINT_DISABLED_WARNINGS = [ |
| 16 'R0923', # Interface not implemented | 20 'R0923', # Interface not implemented |
| 17 'R0201', # Method could be a function | 21 'R0201', # Method could be a function |
| 18 'E1101', # Non-existent member is accessed. | 22 'E1101', # Non-existent member is accessed. |
| 19 ] | 23 ] |
| 20 | 24 |
| 21 | 25 |
| 22 def _CommonChecks(input_api, output_api): | 26 def _CommonChecks(input_api, output_api): |
| 23 """Performs common checks, which includes running pylint.""" | 27 """Performs common checks, which includes running pylint.""" |
| 24 results = [] | 28 results = [] |
| 25 old_sys_path = sys.path | 29 results.extend(input_api.canned_checks.RunPylint( |
| 26 try: | 30 input_api, output_api, |
| 27 # Modules in tools/perf depend on telemetry. | 31 black_list=PYLINT_BLACKLIST, |
| 28 sys.path = [os.path.join(os.pardir, 'telemetry')] + sys.path | 32 disabled_warnings=PYLINT_DISABLED_WARNINGS)) |
| 29 results.extend(input_api.canned_checks.RunPylint( | 33 results.extend(_CheckJson(input_api, output_api)) |
| 30 input_api, output_api, | 34 results.extend(_CheckWprShaFiles(input_api, output_api)) |
| 31 black_list=PYLINT_BLACKLIST, | |
| 32 disabled_warnings=PYLINT_DISABLED_WARNINGS)) | |
| 33 results.extend(_CheckJson(input_api, output_api)) | |
| 34 finally: | |
| 35 sys.path = old_sys_path | |
| 36 return results | 35 return results |
| 37 | 36 |
| 38 | 37 |
| 38 def _CheckWprShaFiles(input_api, output_api): | |
| 39 """ Check whether the wpr sha files have matching URLs """ | |
|
slamm
2015/02/24 19:22:59
No spaces immediately inside triple quotes.
"""Ch
nednguyen
2015/02/24 19:28:33
Done.
| |
| 40 results = [] | |
| 41 for affected_file in input_api.AffectedFiles(include_deletes=False): | |
| 42 filename = affected_file.AbsoluteLocalPath() | |
| 43 if not filename.endswith('wpr.sha1'): | |
| 44 continue | |
| 45 wpr_file_exist_on_cloud = False | |
|
dtu
2015/02/24 19:12:47
nit: wpr_file_exists_in_cloud
slamm
2015/02/24 19:22:59
How about the following?
is_wpr_file_uploaded
or
nednguyen
2015/02/24 19:28:33
Done.
nednguyen
2015/02/24 19:28:33
Done.
| |
| 46 expected_hash = cloud_storage.ReadHash(filename) | |
| 47 for bucket in cloud_storage.SUPPORTED_BUCKETS: | |
| 48 wpr_file_exist_on_cloud = (wpr_file_exist_on_cloud or | |
| 49 cloud_storage.Exists(bucket, expected_hash)) | |
|
slamm
2015/02/24 19:22:59
is_wpr_file_uploaded = any(cloud_storage.Exists(bu
nednguyen
2015/02/24 19:28:33
Nice, I like this.
| |
| 50 if not wpr_file_exist_on_cloud: | |
| 51 wpr_filename = filename[:-5] | |
| 52 results.append(output_api.PresubmitError( | |
|
aiolos (Not reviewing)
2015/02/24 18:19:45
Should this be a warning instead of an error? Peop
nednguyen
2015/02/24 18:24:40
If they don't commit or upload, then this PRESUBMI
dtu
2015/02/24 19:12:47
I think this is fine. I guess you have to be caref
| |
| 53 'No URLs matched for wpr sha file %s.\n' | |
| 54 'You can upload your new wpr archive file with the command:\n' | |
| 55 'depot_tools/upload_to_google_storage.py --bucket ' | |
| 56 '<Your pageset\'s bucket> %s.\nFor more info: see ' | |
| 57 'http://www.chromium.org/developers/telemetry/' | |
| 58 'record_a_page_set#TOC-Upload-the-recording-to-Cloud-Storage' % | |
| 59 (filename, wpr_filename))) | |
| 60 return results | |
| 61 | |
| 62 | |
| 39 def _CheckJson(input_api, output_api): | 63 def _CheckJson(input_api, output_api): |
| 40 """Checks whether JSON files in this change can be parsed.""" | 64 """Checks whether JSON files in this change can be parsed.""" |
| 41 for affected_file in input_api.AffectedFiles(include_deletes=False): | 65 for affected_file in input_api.AffectedFiles(include_deletes=False): |
| 42 filename = affected_file.AbsoluteLocalPath() | 66 filename = affected_file.AbsoluteLocalPath() |
| 43 if os.path.splitext(filename)[1] != '.json': | 67 if os.path.splitext(filename)[1] != '.json': |
| 44 continue | 68 continue |
| 45 try: | 69 try: |
| 46 input_api.json.load(open(filename)) | 70 input_api.json.load(open(filename)) |
| 47 except ValueError: | 71 except ValueError: |
| 48 return [output_api.PresubmitError('Error parsing JSON in %s!' % filename)] | 72 return [output_api.PresubmitError('Error parsing JSON in %s!' % filename)] |
| 49 return [] | 73 return [] |
| 50 | 74 |
| 51 | 75 |
| 52 def CheckChangeOnUpload(input_api, output_api): | 76 def CheckChangeOnUpload(input_api, output_api): |
| 53 report = [] | 77 report = [] |
| 54 report.extend(_CommonChecks(input_api, output_api)) | 78 report.extend(_CommonChecks(input_api, output_api)) |
| 55 return report | 79 return report |
| 56 | 80 |
| 57 | 81 |
| 58 def CheckChangeOnCommit(input_api, output_api): | 82 def CheckChangeOnCommit(input_api, output_api): |
| 59 report = [] | 83 report = [] |
| 60 report.extend(_CommonChecks(input_api, output_api)) | 84 report.extend(_CommonChecks(input_api, output_api)) |
| 61 return report | 85 return report |
| OLD | NEW |