mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-11 01:06:01 +03:00
e57fdb63f8
Similarly to the LibCpp parser regression tests, these tests run the preprocessor on the .cpp test files under Userland/LibCpp/Tests/preprocessor, and compare the output with existing .txt ground truth files.
69 lines
1.9 KiB
Python
Executable File
69 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def run():
|
|
"""Check files checked in to git for trailing newlines at end of file."""
|
|
files = subprocess.run(
|
|
[
|
|
"git", "ls-files", "--",
|
|
"*.cpp",
|
|
"*.h",
|
|
"*.gml",
|
|
"*.html",
|
|
"*.js",
|
|
"*.css",
|
|
"*.sh",
|
|
"*.py",
|
|
"*.json",
|
|
"CMake*.txt",
|
|
"**/CMake*.txt",
|
|
":!:Kernel/FileSystem/ext2_fs.h",
|
|
':!:Userland/DevTools/HackStudio/LanguageServers/Cpp/Tests/*',
|
|
':!:Userland/Libraries/LibCpp/Tests/parser/*',
|
|
':!:Userland/Libraries/LibCpp/Tests/preprocessor/*'
|
|
],
|
|
check=True,
|
|
capture_output=True
|
|
).stdout.decode().strip('\n').split('\n')
|
|
|
|
no_newline_at_eof_errors = []
|
|
blank_lines_at_eof_errors = []
|
|
|
|
did_fail = False
|
|
for filename in files:
|
|
with open(filename, "r") as f:
|
|
f.seek(0, os.SEEK_END)
|
|
|
|
f.seek(f.tell() - 1, os.SEEK_SET)
|
|
if f.read(1) != '\n':
|
|
did_fail = True
|
|
no_newline_at_eof_errors.append(filename)
|
|
continue
|
|
|
|
while True:
|
|
f.seek(f.tell() - 2, os.SEEK_SET)
|
|
char = f.read(1)
|
|
if not char.isspace():
|
|
break
|
|
if char == '\n':
|
|
did_fail = True
|
|
blank_lines_at_eof_errors.append(filename)
|
|
break
|
|
|
|
if no_newline_at_eof_errors:
|
|
print("Files with no newline at the end:", " ".join(no_newline_at_eof_errors))
|
|
if blank_lines_at_eof_errors:
|
|
print("Files that have blank lines at the end:", " ".join(blank_lines_at_eof_errors))
|
|
|
|
if did_fail:
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
os.chdir(os.path.dirname(__file__) + "/..")
|
|
run()
|