# -*- 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)