Files
carbon-lang/bazel/testing/lit_test.py
T
Jon Meow 385ac7da86 Refactor lit testing to generate per-file tests. (#1063)
This switches to generating per-file targets such as `//executable_semantics/testdata:tuple/equality_false.carbon.test`, instead of one test covering all files. Essentially this relies on bazel instead of lit to handle test parallelization.
2022-02-08 11:01:27 -08:00

50 lines
1.2 KiB
Python

"""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 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.
env = os.environ.copy()
del env["PATH"]
# 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())