# -*- coding: utf-8 -*-
if __name__ == '__main__':
import argparse
import os
import unittest
import sys
import system_tests
parser = argparse.ArgumentParser(description="The system test suite")
parser.add_argument(
"--config_file",
type=str,
nargs=1,
help="Path to the suite's configuration file",
default=['suite.conf']
)
parser.add_argument(
"--verbose", "-v",
action='count',
help="verbosity level",
default=1
)
parser.add_argument(
"--debug",
help="enable debugging output",
action='store_true'
)
parser.add_argument(
"dir_or_file",
help="root directory under which the testsuite searches for tests or a"
"single file which tests are run (defaults to the config file's"
"location)",
default=None,
type=str,
nargs='?'
)
args = parser.parse_args()
conf_file = args.config_file[0]
DEFAULT_ROOT = os.path.abspath(os.path.dirname(conf_file))
system_tests.set_debug_mode(args.debug)
system_tests.configure_suite(conf_file)
if args.dir_or_file is None or os.path.isdir(args.dir_or_file):
discovered_tests = unittest.defaultTestLoader.discover(
args.dir_or_file or DEFAULT_ROOT
)
elif os.path.isfile(args.dir_or_file):
discovered_tests = unittest.defaultTestLoader.discover(
os.path.dirname(args.dir_or_file),
pattern=os.path.split(args.dir_or_file)[1],
)
else:
print(
"WARNING: Invalid search location, falling back to {!s}"
.format(DEFAULT_ROOT),
file=sys.stderr
)
discovered_tests = unittest.defaultTestLoader.discover(
DEFAULT_ROOT
)
test_res = unittest.runner.TextTestRunner(verbosity=args.verbose)\
.run(discovered_tests)
sys.exit(0 if len(test_res.failures) + len(test_res.errors) == 0 else 1)