| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """Runs `lit` for testing."""
- __copyright__ = """
- Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- Exceptions. See /LICENSE for license information.
- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- """
- import argparse
- import os
- from pathlib import Path
- import shutil
- import subprocess
- def _parse_args():
- """Parses command line arguments, returning the result."""
- arg_parser = argparse.ArgumentParser(description=__doc__)
- arg_parser.add_argument(
- "--package_name", help="The directory containing tests to run."
- )
- arg_parser.add_argument(
- "lit_args", nargs="*", help="Arguments to pass through to lit."
- )
- return arg_parser.parse_args()
- def main():
- parsed_args = _parse_args()
- args = [
- str(Path(os.environ["TEST_SRCDIR"]).joinpath("llvm-project/llvm/lit")),
- str(Path.cwd().joinpath(parsed_args.package_name)),
- "-v",
- ]
- # Force tests to be explicit about command paths. Some tools are required by
- # bazel's py_binary output in order to find python3, so we add these. The
- # list of tools may prove to be fragile: if so, we may need to change or
- # remove the PATH hiding.
- system_tools = Path(os.environ["TEST_TMPDIR"]).joinpath("system_tools")
- system_tools.mkdir()
- for tool in ("env", "grep", "python3", "sh", "which"):
- system_tools.joinpath(tool).symlink_to(shutil.which(tool))
- env = os.environ.copy()
- env["PATH"] = str(system_tools)
- # Run lit.
- try:
- subprocess.check_call(args=args + parsed_args.lit_args, env=env)
- except subprocess.CalledProcessError as e:
- # Print without the stack trace.
- exit(e)
- if __name__ == "__main__":
- exit(main())
|