From 85ee1738e62741bb2fdec0581988c4eeb11712f1 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 1 Apr 2025 23:50:30 -0400 Subject: [PATCH] run_tests: enable Python 3.8 CI coverage Change-Id: I507da20d3b7234e9f2a22d7654a6405b362eebaf Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/464541 Reviewed-by: Gavin Mak Tested-by: Mike Frysinger Commit-Queue: Mike Frysinger --- run_tests | 23 +++++++++++++++ run_tests.vpython3.8 | 67 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 run_tests.vpython3.8 diff --git a/run_tests b/run_tests index 20dad8da..ef7c04b7 100755 --- a/run_tests +++ b/run_tests @@ -41,6 +41,28 @@ def run_pytest(argv: List[str]) -> int: return pytest.main(argv) +def run_pytest_py38(argv: List[str]) -> int: + """Returns the exit code from pytest under Python 3.8.""" + if is_ci(): + argv = ["-m", "not skip_cq"] + argv + + try: + return subprocess.run( + [ + "vpython3", + "-vpython-spec", + "run_tests.vpython3.8", + "-m", + "pytest", + ] + + argv, + check=False, + ).returncode + except FileNotFoundError: + # Skip if the user doesn't have vpython from depot_tools. + return 0 + + def run_black(): """Returns the exit code from black.""" # Black by default only matches .py files. We have to list standalone @@ -75,6 +97,7 @@ def main(argv): """The main entry.""" checks = ( functools.partial(run_pytest, argv), + functools.partial(run_pytest_py38, argv), run_black, run_flake8, run_isort, diff --git a/run_tests.vpython3.8 b/run_tests.vpython3.8 new file mode 100644 index 00000000..aed5c0c7 --- /dev/null +++ b/run_tests.vpython3.8 @@ -0,0 +1,67 @@ +# This is a vpython "spec" file. +# +# Read more about `vpython` and how to modify this file here: +# https://chromium.googlesource.com/infra/infra/+/main/doc/users/vpython.md +# List of available wheels: +# https://chromium.googlesource.com/infra/infra/+/main/infra/tools/dockerbuild/wheels.md + +python_version: "3.8" + +wheel: < + name: "infra/python/wheels/pytest-py3" + version: "version:8.3.4" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/py-py2_py3" + version: "version:1.11.0" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/iniconfig-py3" + version: "version:1.1.1" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/packaging-py3" + version: "version:23.0" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/pluggy-py3" + version: "version:1.5.0" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/toml-py3" + version: "version:0.10.1" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/tomli-py3" + version: "version:2.1.0" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/pyparsing-py3" + version: "version:3.0.7" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/attrs-py2_py3" + version: "version:21.4.0" +> + +# Required by pytest==8.3.4 +wheel: < + name: "infra/python/wheels/exceptiongroup-py3" + version: "version:1.1.2" +>