PR-URL: https://github.com/nodejs/node/pull/51362 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
123 lines
4.0 KiB
Python
123 lines
4.0 KiB
Python
# Copyright 2023 the V8 project authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
"""Contains all project-specific configuration and entities for V8/Tets262 host."""
|
|
|
|
import json
|
|
|
|
from functools import cached_property
|
|
|
|
from blinkpy.w3c.local_wpt import LocalRepo
|
|
from blinkpy.w3c.wpt_github import GitHubRepo, PROVISIONAL_PR_LABEL
|
|
from blinkpy.w3c.chromium_configs import ProjectConfig
|
|
|
|
|
|
def to_object(item):
|
|
"""
|
|
Recursively convert a dictionary to an object.
|
|
"""
|
|
if isinstance(item, dict):
|
|
return type('_dict_obj', (), {k: to_object(v) for k, v in item.items()})
|
|
if isinstance(item, list):
|
|
return [to_object(element) for element in item]
|
|
return item
|
|
|
|
|
|
class Test262GitHub(GitHubRepo):
|
|
|
|
def __init__(self,
|
|
config,
|
|
host,
|
|
user=None,
|
|
token=None,
|
|
pr_history_window=1000):
|
|
super(Test262GitHub, self).__init__(
|
|
gh_org=config.github.org,
|
|
gh_repo_name=config.github.repo,
|
|
export_pr_label=config.exporter.pr_label,
|
|
provisional_pr_label=PROVISIONAL_PR_LABEL,
|
|
host=host,
|
|
user=user,
|
|
token=token,
|
|
pr_history_window=pr_history_window,
|
|
main_branch=config.github.main_branch,
|
|
min_expected_prs=0)
|
|
|
|
@property
|
|
def skipped_revisions(self):
|
|
return [
|
|
# Revisions below would choke on github checks. Next revision in v8 repo
|
|
# is an effective reland.
|
|
"f4e862d29f6aeaa66b5e8e755dc70fe7cb2bc243",
|
|
"44702d6ea9c1bce9c95316e3aca41c14e0e8533f",
|
|
"87437c41113c2b41aaf5bcbc7fee996df0ab1711",
|
|
"b8d49712ab12dd13bee5da34849f8ab7f5309715",
|
|
"46c933180967191758afd0427f9d0ba02a4d24a3",
|
|
"85bf69fd70e118b1ace64110ed82cb1ff0d58533",
|
|
"b97d50ae5e4bb6b5abfc811c0b618d888c3f1377",
|
|
"c4946b3e60c597fb9d9cccb2b100647a945e309d",
|
|
]
|
|
|
|
|
|
class V8Test262Config(ProjectConfig):
|
|
|
|
def __init__(self, filesystem, config_file):
|
|
super().__init__(filesystem)
|
|
with open(config_file, 'r') as f:
|
|
self.config = to_object(json.loads(f.read()))
|
|
self.relative_tests_path = self.config.gerrit.relative_tests_path
|
|
self.revision_footer = self.config.gerrit.revision_footer
|
|
self.gerrit_project = self.config.gerrit.project
|
|
self.gerrit_branch = self.config.gerrit.branch
|
|
self.github_factory = github_factory(self.config)
|
|
self.local_repo_factory = local_repo_factory(self.config)
|
|
self.files_to_copy = self.config.importer.files_to_copy
|
|
self.paths_to_sync = self.config.importer.paths_to_sync
|
|
|
|
@cached_property
|
|
def project_root(self):
|
|
from blinkpy.common.system.executive import Executive
|
|
return Executive().run_command(
|
|
['git', 'rev-parse', '--show-toplevel']).strip()
|
|
|
|
@property
|
|
def test_root(self):
|
|
return self.project_root + '/' + self.relative_tests_path
|
|
|
|
@property
|
|
def import_destination_path(self):
|
|
return self.test_root
|
|
|
|
@property
|
|
def pr_updated_comment_template(self):
|
|
return self.config.exporter.pr_updated_comment
|
|
|
|
def inflight_cl_comment_template(self):
|
|
return self.config.exporter.inflight_cl_comment
|
|
|
|
|
|
def config_from_file(config_file):
|
|
return lambda filesystem: V8Test262Config(filesystem, config_file)
|
|
|
|
|
|
def local_repo_factory(config):
|
|
return lambda host, gh_token: LocalRepo(
|
|
name=config.github.name,
|
|
gh_org=config.github.org,
|
|
gh_repo_name=config.github.repo,
|
|
gh_ssh_url_template='https://{}@github.com/%s/%s.git' %
|
|
(config.github.org, config.github.repo),
|
|
mirror_url=None,
|
|
default_committer_email=config.exporter.committer_email,
|
|
default_committer_name=config.exporter.committer_name,
|
|
patch_path_renames=[(r.source, r.destination)
|
|
for r in config.github.patch_path_renames],
|
|
host=host,
|
|
gh_token=gh_token,
|
|
main_branch=config.github.main_branch,
|
|
)
|
|
|
|
|
|
def github_factory(config):
|
|
return lambda host, user, token: Test262GitHub(config, host, user, token)
|