#!/usr/bin/env python3 # 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. """Pushes changes to test262 inside V8 to the upstream repo.""" from argparse import ArgumentParser from pathlib import Path import sys def main(): parser = ArgumentParser() parser.add_argument( '-t', '--blink-tools-path', help=("Absolute path to where blink tools are located " "(usually inside a local chromium checkout).")) parser.add_argument( '--config-path', help="Absolute path to a project configuration json file.", default=(Path(__file__).parent / 'v8configs.json')) parser.add_argument( '--phase', help=("Phase of the import process to run. One of 'ALL', 'PREBUILD', " "'POSTBUILD', 'UPLOAD'. ALL will run all phases; suitable for " "local runs. PREBUILD and POSTBUILD are to be used when building " "and running the tests is delegated to a proper builder. UPLOAD is " "used for creating and uploading the CL for the import. UPLOAD is " "deferred to the recipe on the import builder. This importer " "script gets called twice on the builder, first with PREBUILD and " "second with POSTBUILD. Build and UPLOAD phases are deferred to " "the recipe on the builder."), choices=['ALL', 'PREBUILD', 'POSTBUILD', 'UPLOAD'], default='ALL') parser.add_argument( '--test262-failure-file', help=('Absolute path to a file with names of the test to be skipped for ' 'this import. Used only in PREBUILD phase.'), default=None) parser.add_argument( '--v8-test262-last-revision', help=('Used only in POSTBUILD when called separately. The old revision was' ' overwritten at this point by the PREBUILD phase.'), default=None) args, exporter_args = parser.parse_known_args(sys.argv) sys.path.append(args.blink_tools_path) from blinkpy.common import exit_codes from blinkpy.common.host import Host from blinkpy.common.path_finder import add_depot_tools_dir_to_os_path from v8configs import config_from_file from v8_importer import V8TestImporter add_depot_tools_dir_to_os_path() host = Host(project_config_factory=config_from_file(args.config_path)) importer = V8TestImporter( phase=args.phase, host=host, test262_failure_file=args.test262_failure_file, v8_test262_last_rev=args.v8_test262_last_revision) try: success = importer.main(exporter_args[1:]) host.exit(0 if success else 1) except KeyboardInterrupt: host.print_('Interrupted, exiting') host.exit(exit_codes.INTERRUPTED_EXIT_STATUS) if __name__ == '__main__': main()