summaryrefslogtreecommitdiffstats
path: root/chrome/PRESUBMIT.py
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-29 13:01:24 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-29 13:01:24 +0000
commit5a0114506d71f5c73f2e8eab572dd3922d7233e4 (patch)
tree9fbfc6c2ec160326fbcbb5b5a114a5685bc784d4 /chrome/PRESUBMIT.py
parenta3a494336d1719255af56c014a0d27374061e799 (diff)
downloadchromium_src-5a0114506d71f5c73f2e8eab572dd3922d7233e4.zip
chromium_src-5a0114506d71f5c73f2e8eab572dd3922d7233e4.tar.gz
chromium_src-5a0114506d71f5c73f2e8eab572dd3922d7233e4.tar.bz2
Add a presubmit check so that no new unit tests in content/ are added to the unit_tests target
They should all go to content_unittests now BUG=90443 TEST=manual Review URL: http://codereview.chromium.org/8728012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111925 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/PRESUBMIT.py')
-rw-r--r--chrome/PRESUBMIT.py51
1 files changed, 46 insertions, 5 deletions
diff --git a/chrome/PRESUBMIT.py b/chrome/PRESUBMIT.py
index 087232f..8bf83c5 100644
--- a/chrome/PRESUBMIT.py
+++ b/chrome/PRESUBMIT.py
@@ -2,7 +2,13 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-"""Makes sure that the chrome/ code is cpplint clean."""
+"""Presubmit script for changes affecting chrome/
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details about the presubmit API built into gcl.
+"""
+
+import re
INCLUDE_CPP_FILES_ONLY = (
r'.*\.cc$', r'.*\.h$'
@@ -40,11 +46,46 @@ EXCLUDE = (
r'gcapi\.cc$',
)
-def CheckChangeOnUpload(input_api, output_api):
- results = []
+def _CheckChangeLintsClean(input_api, output_api):
+ """Makes sure that the chrome/ code is cpplint clean."""
black_list = input_api.DEFAULT_BLACK_LIST + EXCLUDE
sources = lambda x: input_api.FilterSourceFile(
x, white_list=INCLUDE_CPP_FILES_ONLY, black_list=black_list)
- results.extend(input_api.canned_checks.CheckChangeLintsClean(
- input_api, output_api, sources))
+ return input_api.canned_checks.CheckChangeLintsClean(
+ input_api, output_api, sources)
+
+def _CheckNoContentUnitTestsInChrome(input_api, output_api):
+ """Makes sure that no unit tests from content/ are included in unit_tests."""
+ problems = []
+ for f in input_api.AffectedFiles():
+ if not f.LocalPath().endswith('chrome_tests.gypi'):
+ continue
+
+ for line_num, line in f.ChangedContents():
+ m = re.search(r"'(.*\/content\/.*unittest.*)'", line)
+ if m:
+ problems.append(m.group(1))
+
+ if not problems:
+ return []
+ return [output_api.PresubmitPromptWarning(
+ 'Unit tests located in content/ should be added to the ' +
+ 'content_tests.gypi:content_unittests target.',
+ items=problems)]
+
+def _CommonChecks(input_api, output_api):
+ """Checks common to both upload and commit."""
+ results = []
+ results.extend(_CheckNoContentUnitTestsInChrome(input_api, output_api))
+ return results
+
+def CheckChangeOnUpload(input_api, output_api):
+ results = []
+ results.extend(_CommonChecks(input_api, output_api))
+ results.extend(_CheckChangeLintsClean(input_api, output_api))
+ return results
+
+def CheckChangeOnCommit(input_api, output_api):
+ results = []
+ results.extend(_CommonChecks(input_api, output_api))
return results