|
@@ -0,0 +1,47 @@
|
|
|
+
|
|
|
+
|
|
|
+import os
|
|
|
+import re
|
|
|
+import subprocess
|
|
|
+import sys
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+RE_RELEVANT_FILE = re.compile('^Tests/LibWeb/(Ref|Screenshot|Text)/(.(?!wpt-import/))*\\.html$')
|
|
|
+RE_DOCTYPE = re.compile('^<!doctype .*>', re.IGNORECASE)
|
|
|
+
|
|
|
+
|
|
|
+def should_check_file(filename):
|
|
|
+ return RE_RELEVANT_FILE.match(filename) is not None
|
|
|
+
|
|
|
+
|
|
|
+def find_files_here_or_argv():
|
|
|
+ if len(sys.argv) > 1:
|
|
|
+ raw_list = sys.argv[1:]
|
|
|
+ else:
|
|
|
+ process = subprocess.run(["git", "ls-files"], check=True, capture_output=True)
|
|
|
+ raw_list = process.stdout.decode().strip('\n').split('\n')
|
|
|
+
|
|
|
+ return filter(should_check_file, raw_list)
|
|
|
+
|
|
|
+
|
|
|
+def run():
|
|
|
+ files_with_missing_doctypes = []
|
|
|
+
|
|
|
+ for filename in find_files_here_or_argv():
|
|
|
+ with open(filename, 'r') as file:
|
|
|
+ if not RE_DOCTYPE.search(file.readline()):
|
|
|
+ files_with_missing_doctypes.append(filename)
|
|
|
+
|
|
|
+ if files_with_missing_doctypes:
|
|
|
+ print('The following HTML files should include a doctype declaration at the start of the file but don\'t:\n' +
|
|
|
+ 'You should add <!DOCTYPE html> to the very beginning of these files, except if they absolutely need ' +
|
|
|
+ 'to run in quirks mode. In that case, you can clearly indicate so with a bogus doctype that says ' +
|
|
|
+ '"quirks" instead of "html".\n',
|
|
|
+ ' '.join(files_with_missing_doctypes))
|
|
|
+ sys.exit(1)
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ os.chdir(os.path.dirname(__file__) + "/..")
|
|
|
+ run()
|