summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/tools/ci/update_built.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/tools/ci/update_built.py')
-rw-r--r--testing/web-platform/tests/tools/ci/update_built.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/ci/update_built.py b/testing/web-platform/tests/tools/ci/update_built.py
new file mode 100644
index 0000000000..8e0f18589d
--- /dev/null
+++ b/testing/web-platform/tests/tools/ci/update_built.py
@@ -0,0 +1,74 @@
+# mypy: allow-untyped-defs
+
+import logging
+import os
+import subprocess
+from argparse import ArgumentParser
+
+logger = logging.getLogger()
+
+wpt_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
+
+scripts = {
+ "canvas": ["html/canvas/tools/gentest.py"],
+ "conformance-checkers": ["conformance-checkers/tools/dl.py",
+ "conformance-checkers/tools/ins-del-datetime.py",
+ "conformance-checkers/tools/picture.py",
+ "conformance-checkers/tools/url.py"],
+ "css-images": ["css/css-images/tools/generate_object_view_box_tests.py"],
+ "css-ui": ["css/css-ui/tools/appearance-build-webkit-reftests.py"],
+ "css-writing-modes": ["css/css-writing-modes/tools/generators/generate.py"],
+ # FIXME: https://github.com/web-platform-tests/wpt/issues/32060
+ # "css-text": ["css/css-text/line-breaking/tools/generate-segment-break-transformation-rules-tests.py"],
+ # "css-text-decor": ["css/css-text-decor/tools/generate-text-emphasis-line-height-tests.py",
+ # "css/css-text-decor/tools/generate-text-emphasis-position-property-tests.py",
+ # "css/css-text-decor/tools/generate-text-emphasis-ruby-tests.py",
+ # "css/css-text-decor/tools/generate-text-emphasis-style-property-tests.py"],
+ "fetch": ["fetch/metadata/tools/generate.py"],
+ "html5lib": ["html/tools/update_html5lib_tests.py"],
+ "infrastructure": ["infrastructure/assumptions/tools/ahem-generate-table.py"],
+ "mimesniff": ["mimesniff/mime-types/resources/generated-mime-types.py"],
+ "speculative-parsing": ["html/syntax/speculative-parsing/tools/generate.py"]
+}
+
+
+def get_parser():
+ parser = ArgumentParser()
+ parser.add_argument("--list", action="store_true",
+ help="List suites that can be updated and the related script files")
+ parser.add_argument("--include", nargs="*", choices=scripts.keys(), default=None,
+ help="Suites to update (default is to update everything)")
+ return parser
+
+
+def list_suites(include):
+ for name, script_paths in scripts.items():
+ if name in include:
+ print(name)
+ for script_path in script_paths:
+ print(f" {script_path}")
+
+
+def run(venv, **kwargs):
+ include = kwargs["include"]
+ if include is None:
+ include = list(scripts.keys())
+
+ if kwargs["list"]:
+ list_suites(include)
+ return 0
+
+ failed = False
+
+ for target in include:
+ for script in scripts[target]:
+ script_path = script.replace("/", os.path.sep)
+ cmd = [os.path.join(venv.bin_path, "python3"), os.path.join(wpt_root, script_path)]
+ logger.info(f"Running {' '.join(cmd)}")
+ try:
+ subprocess.check_call(cmd, cwd=os.path.dirname(script_path))
+ except subprocess.CalledProcessError:
+ logger.error(f"Update script {script} failed")
+ failed = True
+
+ return 1 if failed else 0