# 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)