nodejs/deps/v8/test/test262/PRESUBMIT.py

73 lines
2.0 KiB
Python
Raw Permalink Normal View History

# 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.
import pathlib
import platform
from subprocess import STDOUT, PIPE, Popen
# This line is 'magic' in that git-cl looks for it to decide whether to
# use Python3 instead of Python2 when running the code in this file.
USE_PYTHON3 = True
def _CheckLint(input_api, output_api):
root = pathlib.Path(input_api.PresubmitLocalPath())
vpython_spec = root / '.lint-vpython3'
workdir = root / 'data'
lint_exe = workdir / 'tools' / 'lint' / 'lint.py'
test_path = workdir / '..' / 'local-tests' / 'test'
staging_path = (test_path / 'staging').relative_to(workdir)
lint_exceptions = root / 'lint.exceptions'
command = [
'vpython3',
'-vpython-spec',
vpython_spec,
lint_exe,
'--exceptions',
lint_exceptions,
'--features',
staging_path / 'features.txt',
staging_path,
]
proc = Popen(
command,
cwd=workdir,
stderr=STDOUT,
stdout=PIPE,
shell=platform.system() == 'Windows')
output, exit_code = proc.communicate()[0], proc.returncode
if exit_code == 0:
return []
return [
output_api.PresubmitError(
"Test262 lint failed.", long_text=output.decode())
]
def _PyUnitTest(input_api, output_api):
return input_api.RunTests(
input_api.canned_checks.GetUnitTestsRecursively(
input_api,
output_api,
input_api.os_path.join(input_api.PresubmitLocalPath()),
files_to_check=[r'.+_test\.py$'],
files_to_skip=[],
run_on_python2=False,
))
def _CommonChecks(input_api, output_api):
checks = [
_CheckLint,
_PyUnitTest,
]
return sum([check(input_api, output_api) for check in checks], [])
def CheckChangeOnCommit(input_api, output_api):
return _CommonChecks(input_api, output_api)
def CheckChangeOnUpload(input_api, output_api):
return _CommonChecks(input_api, output_api)