mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:57:35 +00:00
LibWeb: Add a script to run Web Platform Tests
Introduce very initial and basic support for running Web Platform Tests for Ladybird. This change includes simple bash script that currently works only on Debian and could run tests with patched runner. For now script to run WPT is not integrated in CI. There is also a bunch of metadata required to run WPT. To avoid introducing thousands of files in the initial commit for now it is limited to run only css/CSS2/floats tests subdirectory.
This commit is contained in:
parent
fb262de7cb
commit
a414ddcbf3
7 changed files with 754523 additions and 0 deletions
76
Tests/LibWeb/WPT/concat-extract-metadata.py
Executable file
76
Tests/LibWeb/WPT/concat-extract-metadata.py
Executable file
|
@ -0,0 +1,76 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
Usage:
|
||||
|
||||
- To concatenate all WPT expectation files in the metadata directory into metadata.tx:
|
||||
concat-extract-metadata.py --concat metadata > metadata.txt
|
||||
|
||||
- To extract expectation files from metadata.txt into the metadata directory:
|
||||
concat-extract-metadata.py --extract metadata.txt metadata
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
|
||||
|
||||
def concat_metadata_files(metadata_directory):
|
||||
concatenated_metadata = ""
|
||||
|
||||
for root, _, files in os.walk(metadata_directory):
|
||||
for filename in files:
|
||||
if filename.endswith(".ini"):
|
||||
filepath = os.path.join(root, filename)
|
||||
relative_path = os.path.relpath(filepath, metadata_directory)
|
||||
with open(filepath, "r") as file:
|
||||
file_content = file.read()
|
||||
concatenated_metadata += f"--- {relative_path} ---\n"
|
||||
concatenated_metadata += file_content + "\n"
|
||||
|
||||
return concatenated_metadata
|
||||
|
||||
|
||||
def extract_metadata_files(concatenated_metadata_file, output_metadata_directory):
|
||||
with open(concatenated_metadata_file, "r") as file:
|
||||
concatenated_metadata = file.read()
|
||||
|
||||
lines = concatenated_metadata.splitlines()
|
||||
|
||||
current_filename = None
|
||||
current_content = []
|
||||
|
||||
def flush_content_to_file(filename, content, output_directory):
|
||||
filepath = os.path.join(output_directory, filename)
|
||||
os.makedirs(os.path.dirname(filepath), exist_ok=True)
|
||||
with open(filepath, "w") as file:
|
||||
file.write("\n".join(content))
|
||||
return filepath
|
||||
|
||||
for line in lines:
|
||||
if line.startswith("---"):
|
||||
if current_filename:
|
||||
flush_content_to_file(current_filename, current_content, output_metadata_directory)
|
||||
|
||||
current_filename = line[4:-4].strip()
|
||||
current_content = []
|
||||
else:
|
||||
current_content.append(line)
|
||||
|
||||
if current_filename:
|
||||
flush_content_to_file(current_filename, current_content, output_metadata_directory)
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description="Concatenate and extract WPT metadata files")
|
||||
|
||||
parser.add_argument("--concat", help="Concatenate expectation files from specified directory")
|
||||
parser.add_argument("--extract", nargs=2, help="Extract expectation files from specified input concatenated file")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.concat:
|
||||
metadata_directory_path = args.concat
|
||||
print(concat_metadata_files(metadata_directory_path))
|
||||
|
||||
if args.extract:
|
||||
input_concatenated_metadata_filename, output_metadata_directory = args.extract
|
||||
extract_metadata_files(input_concatenated_metadata_filename, output_metadata_directory)
|
Loading…
Add table
Add a link
Reference in a new issue