"""Load and run the Pygame test suite python -c "import pygame.tests.go" [] or python test/go.py [] Command line option --help displays a command line usage message. run_tests.py in the main distribution directory is an alternative to test.go """ import sys if __name__ == '__main__': import os pkg_dir = os.path.split(os.path.abspath(__file__))[0] parent_dir, pkg_name = os.path.split(pkg_dir) is_pygame_pkg = (pkg_name == 'tests' and os.path.split(parent_dir)[1] == 'pygame') if not is_pygame_pkg: sys.path.insert(0, parent_dir) else: is_pygame_pkg = __name__.startswith('pygame.tests.') if is_pygame_pkg: from pygame.tests.test_utils.run_tests import run_and_exit from pygame.tests.test_utils.test_runner import opt_parser else: from test.test_utils.run_tests import run_and_exit from test.test_utils.test_runner import opt_parser if is_pygame_pkg: test_pkg_name = "pygame.tests" else: test_pkg_name = "test" program_name = sys.argv[0] if program_name == '-c': program_name = 'python -c "import %s.go"' % test_pkg_name ########################################################################### # Set additional command line options # # Defined in test_runner.py as it shares options, added to here opt_parser.set_usage(""" Runs all or some of the %(pkg)s.xxxx_test tests. $ %(exec)s sprite threads -sd Runs the sprite and threads module tests isolated in subprocesses, dumping all failing tests info in the form of a dict. """ % {'pkg': test_pkg_name, 'exec': program_name}) opt_parser.add_option ( "-d", "--dump", action = 'store_true', help = "dump results as dict ready to eval" ) opt_parser.add_option ( "-F", "--file", help = "dump results to a file" ) opt_parser.add_option ( "-m", "--multi_thread", metavar = 'THREADS', type = 'int', help = "run subprocessed tests in x THREADS" ) opt_parser.add_option ( "-t", "--time_out", metavar = 'SECONDS', type = 'int', help = "kill stalled subprocessed tests after SECONDS" ) opt_parser.add_option ( "-f", "--fake", metavar = "DIR", help = "run fake tests in run_tests__tests/$DIR" ) opt_parser.add_option ( "-p", "--python", metavar = "PYTHON", help = "path to python excutable to run subproccesed tests\n" "default (sys.executable): %s" % sys.executable) opt_parser.add_option ( "-I", "--interactive", action = 'store_true', help = "include tests requiring user input") opt_parser.add_option( "-S", "--seed", type = 'int', help = "Randomisation seed" ) ########################################################################### # Set run() keyword arguements according to command line arguemnts. # args will be the test module list, passed as positional argumemts. options, args = opt_parser.parse_args() kwds = {} if options.incomplete: kwds['incomplete'] = True if options.usesubprocess: kwds['usesubprocess'] = True else: kwds['usesubprocess'] = False if options.dump: kwds['dump'] = True if options.file: kwds['file'] = options.file if options.exclude: kwds['exclude'] = options.exclude if options.unbuffered: kwds['unbuffered'] = True if options.randomize: kwds['randomize'] = True if options.seed is not None: kwds['seed'] = options.seed if options.multi_thread is not None: kwds['multi_thread'] = options.multi_thread if options.time_out is not None: kwds['time_out'] = options.time_out if options.fake: kwds['fake'] = options.fake if options.python: kwds['python'] = options.python if options.interactive: kwds['interactive'] = True ########################################################################### # Run the test suite. run_and_exit(*args, **kwds)