mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Check for blank line after shebang and grab actual comment block instead of hard-coded one
This commit is contained in:
parent
48ace17b54
commit
9a3b61abe1
4 changed files with 22 additions and 8 deletions
|
@ -7,11 +7,6 @@
|
||||||
# option. This file may not be copied, modified, or distributed
|
# option. This file may not be copied, modified, or distributed
|
||||||
# except according to those terms.
|
# except according to those terms.
|
||||||
|
|
||||||
# when wrapped to 80 chars, the longest license is 10 lines.
|
|
||||||
# TODO actually grab whatever commented block is before the second blank line
|
|
||||||
# of the file instead of hard-coding this.
|
|
||||||
MAX_LICENSE_LINESPAN = 12
|
|
||||||
|
|
||||||
MPL = """\
|
MPL = """\
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public \
|
This Source Code Form is subject to the terms of the Mozilla Public \
|
||||||
License, v. 2.0. If a copy of the MPL was not distributed with this \
|
License, v. 2.0. If a copy of the MPL was not distributed with this \
|
||||||
|
|
|
@ -163,13 +163,23 @@ def licensed_apache(header):
|
||||||
def check_license(file_name, lines):
|
def check_license(file_name, lines):
|
||||||
if any(file_name.endswith(ext) for ext in (".toml", ".lock", ".json")):
|
if any(file_name.endswith(ext) for ext in (".toml", ".lock", ".json")):
|
||||||
raise StopIteration
|
raise StopIteration
|
||||||
block = min(len(lines), licenseck.MAX_LICENSE_LINESPAN)
|
|
||||||
|
if lines[0].startswith("#!") and lines[1].strip():
|
||||||
|
yield (1, "missing blank line after shebang")
|
||||||
|
|
||||||
|
blank_lines = 0
|
||||||
|
max_blank_lines = 2 if lines[0].startswith("#!") else 1
|
||||||
license_block = []
|
license_block = []
|
||||||
for l in lines[:block]:
|
|
||||||
|
for l in lines:
|
||||||
l = l.rstrip('\n')
|
l = l.rstrip('\n')
|
||||||
|
if not l.strip():
|
||||||
|
blank_lines += 1
|
||||||
|
if blank_lines >= max_blank_lines:
|
||||||
|
break
|
||||||
line = uncomment(l)
|
line = uncomment(l)
|
||||||
if line is not None:
|
if line is not None:
|
||||||
license_block += [line]
|
license_block.append(line)
|
||||||
contents = " ".join(license_block)
|
contents = " ".join(license_block)
|
||||||
valid_license = licensed_mpl(contents) or licensed_apache(contents)
|
valid_license = licensed_mpl(contents) or licensed_apache(contents)
|
||||||
acknowledged_bad_license = "xfail-license" in contents
|
acknowledged_bad_license = "xfail-license" in contents
|
||||||
|
|
4
python/tidy/servo_tidy_tests/shebang_license.py
Normal file
4
python/tidy/servo_tidy_tests/shebang_license.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
@ -48,6 +48,11 @@ class CheckTidiness(unittest.TestCase):
|
||||||
self.assertEqual('incorrect license', errors.next()[2])
|
self.assertEqual('incorrect license', errors.next()[2])
|
||||||
self.assertNoMoreErrors(errors)
|
self.assertNoMoreErrors(errors)
|
||||||
|
|
||||||
|
def test_shebang_license(self):
|
||||||
|
errors = tidy.collect_errors_for_files(iterFile('shebang_license.py'), [], [tidy.check_license], print_text=False)
|
||||||
|
self.assertEqual('missing blank line after shebang', errors.next()[2])
|
||||||
|
self.assertNoMoreErrors(errors)
|
||||||
|
|
||||||
def test_shell(self):
|
def test_shell(self):
|
||||||
errors = tidy.collect_errors_for_files(iterFile('shell_tidy.sh'), [], [tidy.check_shell], print_text=False)
|
errors = tidy.collect_errors_for_files(iterFile('shell_tidy.sh'), [], [tidy.check_shell], print_text=False)
|
||||||
self.assertEqual('script does not have shebang "#!/usr/bin/env bash"', errors.next()[2])
|
self.assertEqual('script does not have shebang "#!/usr/bin/env bash"', errors.next()[2])
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue