blob: 13c78a896690691348a76377cd026fe14821edfd [file] [log] [blame]
#!/usr/bin/env python3
############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import argparse
import importlib.util
import os
import pathlib
import sys
parser = argparse.ArgumentParser(description="Performs an ATF test run")
group = parser.add_mutually_exclusive_group()
group.add_argument(
"--auto-config",
action="store_true",
help="the slurm configuration will be altered as needed by the test",
)
group.add_argument(
"--local-config",
action="store_false",
dest="auto_config",
help="the slurm configuration will not be altered. This is the default",
)
group.add_argument(
"--pdb",
action="store_true",
dest="pdb",
help="Use pdb to debug failures",
)
parser.add_argument(
"--no-color", action="store_true", help="the logs won't include color"
)
parser.add_argument(
"--allow-slurmdbd-modify",
action="store_true",
help="allow running in local-config even if require_accounting(modify=True)",
)
parser.add_argument("PYTEST_OPTION ...", nargs="?", help="additional pytest options")
parser.add_argument("TEST_FILE_OR_DIR ...", nargs="?", help="test files or directories")
args, unknown = parser.parse_known_args()
# Verify that pytest is installed
if importlib.util.find_spec("pytest") is None:
sys.exit("pytest must be installed in order to run the python testsuite")
# Only highlight skips in auto-config mode
if args.auto_config:
report_options = "A"
else:
report_options = "fE"
atf_base_dir = str(pathlib.Path(__file__).resolve().parent)
# Change directory to the base of the ATF repo
os.chdir(atf_base_dir)
command = "pytest"
# --disable-warnings is very useful for tests using pydantic,
# logging.warning in tests are still shown
args = [
command,
"-s",
f"-r{report_options}",
"-v",
"-p",
"no:cacheprovider",
"--disable-warnings",
]
if "pdb" in args:
args.append("--pdb")
args.extend(sys.argv[1:])
os.execvp(command, args)