mirror of https://github.com/mamedev/mame.git
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
#!/usr/bin/python
|
|
##
|
|
## license:BSD-3-Clause
|
|
## copyright-holders:Angelo Salese
|
|
##
|
|
import sys
|
|
import os
|
|
from os.path import join, dirname, realpath
|
|
import argparse
|
|
import logging
|
|
from tool_tester import (
|
|
ORCHESTRATOR_POOL
|
|
)
|
|
|
|
def get_args():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"-v",
|
|
"--verbose",
|
|
dest="verbose",
|
|
action="store_true",
|
|
help="Enable debug logging messages if enabled"
|
|
)
|
|
parser.add_argument(
|
|
"-work_dir",
|
|
dest="work_dir",
|
|
type=str,
|
|
default=os.getcwd(),
|
|
help="Work directory where tools lies"
|
|
)
|
|
parser.add_argument(
|
|
"-id",
|
|
dest="test_id",
|
|
type=str,
|
|
default=None,
|
|
help="If non-default run this test suite only, supported values: {0}".format(
|
|
repr([item.identifier for item in ORCHESTRATOR_POOL])
|
|
)
|
|
)
|
|
return parser.parse_args()
|
|
|
|
if __name__ == "__main__":
|
|
args = get_args()
|
|
|
|
# TODO: proper requirements.txt / setup.py or virtual env management
|
|
# dataclasses aren't supported in anything prior to 3.7 (dacite lib 3.6)
|
|
assert sys.version_info >= (3, 7), f"python version {sys.version_info.major}.{sys.version_info.minor} < 3.7"
|
|
log_level = logging.DEBUG if args.verbose else logging.INFO
|
|
|
|
# TODO: add colorized messages
|
|
# consider either using colorlog or make one that has support for all terminal flavours
|
|
logging.basicConfig(format='%(levelname)s: %(message)s', level=log_level)
|
|
|
|
# TODO: currently points to $(regtests)/assets, make it a configurable option?
|
|
assets_folder = join(dirname(dirname(realpath(__file__))), "assets")
|
|
|
|
chained_results = []
|
|
__single_test = args.test_id
|
|
if __single_test is None:
|
|
__EXECUTE_TESTS = ORCHESTRATOR_POOL
|
|
else:
|
|
__EXECUTE_TESTS = [item for item in ORCHESTRATOR_POOL if item.identifier == args.test_id]
|
|
assert __EXECUTE_TESTS, f"{args.test_id} not found in available tests"
|
|
|
|
for test_cls in __EXECUTE_TESTS:
|
|
test_fn = test_cls(args.work_dir, assets_folder)
|
|
logging.info("Start test suite: %s", test_fn.identifier)
|
|
chained_results.append(test_fn.execute_tests(test_fn.compose_tests()))
|
|
logging.debug("test results %s", repr(chained_results))
|
|
sys.exit(0 if all(chained_results) else 1)
|