Daniel Erat | b8cf949 | 2015-07-06 13:18:13 -0600 | [diff] [blame] | 1 | # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 | # Use of this source code is governed by a BSD-style license that can be |
| 3 | # found in the LICENSE file. |
| 4 | |
| 5 | """Chromium presubmit script for src/base. |
| 6 | |
| 7 | See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| 8 | for more details on the presubmit API built into depot_tools. |
| 9 | """ |
| 10 | |
| 11 | def _CheckNoInterfacesInBase(input_api, output_api): |
| 12 | """Checks to make sure no files in libbase.a have |@interface|.""" |
| 13 | pattern = input_api.re.compile(r'^\s*@interface', input_api.re.MULTILINE) |
| 14 | files = [] |
| 15 | for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile): |
| 16 | if (f.LocalPath().startswith('base/') and |
| 17 | not "/ios/" in f.LocalPath() and |
| 18 | not "/test/" in f.LocalPath() and |
| 19 | not f.LocalPath().endswith('_unittest.mm') and |
| 20 | not f.LocalPath().endswith('mac/sdk_forward_declarations.h')): |
| 21 | contents = input_api.ReadFile(f) |
| 22 | if pattern.search(contents): |
| 23 | files.append(f) |
| 24 | |
| 25 | if len(files): |
| 26 | return [ output_api.PresubmitError( |
| 27 | 'Objective-C interfaces or categories are forbidden in libbase. ' + |
| 28 | 'See http://groups.google.com/a/chromium.org/group/chromium-dev/' + |
| 29 | 'browse_thread/thread/efb28c10435987fd', |
| 30 | files) ] |
| 31 | return [] |
| 32 | |
| 33 | |
| 34 | def _CommonChecks(input_api, output_api): |
| 35 | """Checks common to both upload and commit.""" |
| 36 | results = [] |
| 37 | results.extend(_CheckNoInterfacesInBase(input_api, output_api)) |
| 38 | return results |
| 39 | |
| 40 | def CheckChangeOnUpload(input_api, output_api): |
| 41 | results = [] |
| 42 | results.extend(_CommonChecks(input_api, output_api)) |
| 43 | return results |
| 44 | |
| 45 | |
| 46 | def CheckChangeOnCommit(input_api, output_api): |
| 47 | results = [] |
| 48 | results.extend(_CommonChecks(input_api, output_api)) |
| 49 | return results |