blob: 6c6d26c9100ad5bece056416cde682f15ce8bc58 [file] [log] [blame]
#!/usr/bin/env vpython3
# Copyright 2024 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Wrapper to call pytest. All arguments are passed directly to pytest."""
import os
from pathlib import Path
import site
import subprocess
import sys
from typing import List, Optional
import pytest
HERE = Path(__file__).resolve().parent
BOXSTER_PYTHON_PATH = HERE.parent.parent / "config" / "python"
site.addsitedir(HERE)
site.addsitedir(BOXSTER_PYTHON_PATH)
def main(argv: Optional[List[str]]) -> int:
"""The main function."""
# Don't run on pre-upload. We only want to run if called directly or in
# fullcheckout-presubmit builder.
presubmit_commit = os.environ.get("PRESUBMIT_COMMIT", "")
if presubmit_commit not in ("", "pre-submit"):
print(f"Exit as PRESUBMIT_COMMIT={presubmit_commit}", file=sys.stderr)
return 0
# Ensure the cipd dependencies and put it in PATH.
cache_dir = Path(
os.environ.get("XDG_CACHE_HOME") or (Path.home() / ".cache")
)
cipd_root = cache_dir / "chromeos-config" / "cipd-root"
subprocess.run(
[
"cipd",
"ensure",
"-root",
cipd_root,
"-ensure-file",
HERE / "cipd_manifest.txt",
],
check=True,
)
# Note: we strip PATH except for the cipd_root, that way we ensure we don't
# start unexpectedly depending on any host tools.
os.environ["PATH"] = f"{cipd_root}/bin"
# Change to this directory for consistency.
os.chdir(HERE)
# We do no argument parsing. All arguments are passed directly to pytest.
return pytest.main(argv)
if __name__ == "__main__":
main(sys.argv[1:])