diff --git a/presubmit_canned_checks.py b/presubmit_canned_checks.py index 014af28ae..52d93b4fb 100644 --- a/presubmit_canned_checks.py +++ b/presubmit_canned_checks.py @@ -275,13 +275,16 @@ def CheckLongLines(input_api, output_api, maxlen=80, source_file_filter=None): return [] -def CheckLicense(input_api, output_api, license, source_file_filter=None): +def CheckLicense(input_api, output_api, license, source_file_filter=None, + accept_empty_files=True): """Verifies the license header. """ license_re = input_api.re.compile(license, input_api.re.MULTILINE) bad_files = [] for f in input_api.AffectedSourceFiles(source_file_filter): contents = input_api.ReadFile(f, 'rb') + if accept_empty_files and not contents: + continue if not license_re.search(contents): bad_files.append(f.LocalPath()) if bad_files: diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py index 4a8ad588c..f6880025e 100755 --- a/tests/presubmit_unittest.py +++ b/tests/presubmit_unittest.py @@ -1386,7 +1386,7 @@ class CannedChecksUnittest(PresubmitTestsBase): 'svn:eol-style', 'LF', '', False, presubmit.OutputApi.PresubmitNotifyResult, True) - def _LicenseCheck(self, text, license, committing, expected_result): + def _LicenseCheck(self, text, license, committing, expected_result, **kwargs): change = self.mox.CreateMock(presubmit.SvnChange) change.scm = 'svn' input_api = self.MockInputApi(change, committing) @@ -1398,7 +1398,8 @@ class CannedChecksUnittest(PresubmitTestsBase): self.mox.ReplayAll() result = presubmit_canned_checks.CheckLicense( - input_api, presubmit.OutputApi, license, 42) + input_api, presubmit.OutputApi, license, source_file_filter=42, + **kwargs) if expected_result: self.assertEqual(len(result), 1) self.assertEqual(result[0].__class__, expected_result) @@ -1446,6 +1447,14 @@ class CannedChecksUnittest(PresubmitTestsBase): self._LicenseCheck(text, license, False, presubmit.OutputApi.PresubmitNotifyResult) + def testCheckLicenseEmptySuccess(self): + text = '' + license = ( + r".*? Copyright \(c\) 2037 Nobody." "\n" + r".*? All Rights Reserved\." "\n" + ) + self._LicenseCheck(text, license, True, None, accept_empty_files=True) + def testCannedCheckSvnAccidentalSubmission(self): modified_dir_file = 'foo/' accidental_submssion_file = 'foo/bar.cc'