Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Unified Diff: blimp/PRESUBMIT.py

Issue 2005023002: Blimp presubmit to check for unit tests on new .cc files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/PRESUBMIT.py
diff --git a/blimp/PRESUBMIT.py b/blimp/PRESUBMIT.py
index ae90d459bc91a181eb154ae1f6652b91c5eb80a5..c8c4224d1bce3b2b8113f5aa173f65dbf2012892 100644
--- a/blimp/PRESUBMIT.py
+++ b/blimp/PRESUBMIT.py
@@ -19,7 +19,33 @@ def CheckChangeLintsClean(input_api, output_api):
return input_api.canned_checks.CheckChangeLintsClean(
input_api, output_api, source_filter, lint_filters=[], verbose_level=1)
+def CheckNewFilesHaveTests(input_api, output_api):
+ unittest_files = set()
Kevin M 2016/05/23 23:57:39 Does this check files that live outside of blimp/
Wez 2016/05/24 00:44:54 path/PRESUBMIT.py only gets called for files that
Brian Goldman 2016/06/01 22:56:57 I tested this. It only checks files under blimp.
+ files_needing_unittest = set()
Wez 2016/05/24 00:44:54 nit: How about new_unittest_files and new_source_f
Brian Goldman 2016/06/01 22:56:57 I'm going to leave the names as-is even though I d
+
Kevin M 2016/05/23 23:57:39 Also need something analogous for Java tests, whic
Wez 2016/05/24 00:44:54 Feels like a follow-up CL?
Brian Goldman 2016/06/01 22:56:57 Yes :)
+ for source_file in input_api.AffectedFiles():
+ if source_file.Action() == 'A':
+ name = source_file.LocalPath()
+ if re.search(r'_unittest\.cc$', name):
Kevin M 2016/05/23 23:57:39 Can we be consistent with search vs match?
Kevin M 2016/05/23 23:57:39 Should we also exclude anything with "test" in the
Wez 2016/05/24 00:44:54 And use re.compile() to compile the REs once each,
Wez 2016/05/24 00:44:54 This is only generating a warning, though, so it w
Brian Goldman 2016/06/01 22:56:57 I ended up getting rid of regex for this section e
Brian Goldman 2016/06/01 22:56:57 I'm going with the assumption that if it ends in "
Brian Goldman 2016/06/01 22:56:57 No more regexes in this section. I do use one for
+ unittest_files.add(name)
+ elif re.match(r'^blimp[\\/].*\.cc$', name):
+ files_needing_unittest.add(name)
+
+ missing = []
Wez 2016/05/24 00:44:54 nit: missing_unittest_files?
+
+ for name in files_needing_unittest:
+ unittest_name = re.sub(r'\.cc$', '_unittest.cc', name)
+ if unittest_name not in unittest_files:
+ missing.append(name)
+
+ if missing:
+ message = 'The following new files are missing unit tests:'
+ return [output_api.PresubmitPromptWarning(message, missing)]
+ else:
+ return []
+
def CheckChangeOnUpload(input_api, output_api):
results = []
results += CheckChangeLintsClean(input_api, output_api)
+ results += CheckNewFilesHaveTests(input_api, output_api)
return results
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698