OLD | NEW |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 """Top-level presubmit script for src/components/cronet. | 5 """Top-level presubmit script for src/components/cronet. |
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 |
(...skipping 13 matching lines...) Expand all Loading... |
24 input_api.os_path.join(chromium_src_dir, 'build', 'android', 'gyp', 'util'), | 24 input_api.os_path.join(chromium_src_dir, 'build', 'android', 'gyp', 'util'), |
25 input_api.os_path.join(chromium_src_dir, 'net', 'tools', 'net_docs'), | 25 input_api.os_path.join(chromium_src_dir, 'net', 'tools', 'net_docs'), |
26 input_api.os_path.join(chromium_src_dir, 'tools'), | 26 input_api.os_path.join(chromium_src_dir, 'tools'), |
27 input_api.os_path.join(chromium_src_dir, 'third_party'), | 27 input_api.os_path.join(chromium_src_dir, 'third_party'), |
28 input_api.os_path.join(chromium_src_dir, | 28 input_api.os_path.join(chromium_src_dir, |
29 'third_party', 'catapult', 'telemetry'), | 29 'third_party', 'catapult', 'telemetry'), |
30 input_api.os_path.join(chromium_src_dir, | 30 input_api.os_path.join(chromium_src_dir, |
31 'third_party', 'catapult', 'devil'), | 31 'third_party', 'catapult', 'devil'), |
32 ] | 32 ] |
33 | 33 |
| 34 def _PackageChecks(input_api, output_api): |
| 35 """Verify API classes are in org.chromium.net package, and implementation |
| 36 classes are not in org.chromium.net package.""" |
| 37 api_file_pattern = input_api.re.compile( |
| 38 r'^components/cronet/android/api/.*\.(java|template)$') |
| 39 impl_file_pattern = input_api.re.compile( |
| 40 r'^components/cronet/android/java/.*\.(java|template)$') |
| 41 api_package_pattern = input_api.re.compile(r'^package (?!org.chromium.net;)') |
| 42 impl_package_pattern = input_api.re.compile(r'^package org.chromium.net;') |
| 43 |
| 44 source_filter = lambda path: input_api.FilterSourceFile(path, |
| 45 white_list=[r'^components/cronet/android/.*\.(java|template)$']) |
| 46 |
| 47 problems = [] |
| 48 for f in input_api.AffectedSourceFiles(source_filter): |
| 49 local_path = f.LocalPath() |
| 50 for line_number, line in f.ChangedContents(): |
| 51 if (api_file_pattern.search(local_path)): |
| 52 if (api_package_pattern.search(line)): |
| 53 problems.append( |
| 54 '%s:%d\n %s' % (local_path, line_number, line.strip())) |
| 55 elif (impl_file_pattern.search(local_path)): |
| 56 if (impl_package_pattern.search(line)): |
| 57 problems.append( |
| 58 '%s:%d\n %s' % (local_path, line_number, line.strip())) |
| 59 |
| 60 if problems: |
| 61 return [output_api.PresubmitError( |
| 62 'API classes must be in org.chromium.net package, and implementation\n' |
| 63 'classes must not be in org.chromium.net package.', |
| 64 problems)] |
| 65 else: |
| 66 return [] |
| 67 |
34 def CheckChangeOnUpload(input_api, output_api): | 68 def CheckChangeOnUpload(input_api, output_api): |
35 results = [] | 69 results = [] |
36 results.extend(_PyLintChecks(input_api, output_api)) | 70 results.extend(_PyLintChecks(input_api, output_api)) |
37 results.extend( | 71 results.extend( |
38 input_api.canned_checks.CheckPatchFormatted(input_api, output_api)) | 72 input_api.canned_checks.CheckPatchFormatted(input_api, output_api)) |
| 73 results.extend(_PackageChecks(input_api, output_api)) |
39 return results | 74 return results |
OLD | NEW |