| Index: blimp/PRESUBMIT.py
|
| diff --git a/blimp/PRESUBMIT.py b/blimp/PRESUBMIT.py
|
| index ae90d459bc91a181eb154ae1f6652b91c5eb80a5..021592a729d914ed9228adeff998d3e1bd4727f8 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()
|
| + files_needing_unittest = set()
|
| +
|
| + for source_file in input_api.AffectedFiles():
|
| + if source_file.Action() == 'A':
|
| + name = source_file.LocalPath()
|
| + if name.endswith('_unittest.cc'):
|
| + unittest_files.add(name)
|
| + elif name.endswith('.cc') and not name.endswith('test.cc'):
|
| + files_needing_unittest.add(name)
|
| +
|
| + 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_unittest_files.append(name)
|
| +
|
| + if missing_unittest_files:
|
| + message = 'The following new files are missing unit tests:'
|
| + return [output_api.PresubmitPromptWarning(message, missing_unittest_files)]
|
| + else:
|
| + return []
|
| +
|
| def CheckChangeOnUpload(input_api, output_api):
|
| results = []
|
| results += CheckChangeLintsClean(input_api, output_api)
|
| + results += CheckNewFilesHaveTests(input_api, output_api)
|
| return results
|
|
|