Ejemplo n.º 1
0
def main():
    import logging
    import os
    import random
    import sys
    import unittest

    from argparse import ArgumentParser, SUPPRESS

    parser = ArgumentParser(usage=SUPPRESS)
    parser.add_argument(
        '-r',
        '--random',
        action='store_true',
        default=False,
        help='''randomize ordering of test cases and further randomize
                test methods within each test case''')
    parser.add_argument('-d',
                        '--debug',
                        action='store_true',
                        default=False,
                        help='''Set logging output to DEBUG''')
    parser.add_argument('--fast',
                        action='store_true',
                        default=conf.fast,
                        help='''Skip slow unittests (image comparisons).''')

    def print_help():
        parser._print_help()
        unittest.main()

    parser._print_help = parser.print_help
    parser.print_help = print_help

    args, unknown_args = parser.parse_known_args(sys.argv)

    if args.debug:
        logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

    conf.fast = args.fast
    if not conf.fast:
        conf.comparator = update_baseline_images()

    if args.random:
        unittest.defaultTestLoader.sortTestMethodsUsing = \
            lambda *a: random.choice((-1,1))

        def suite_init(self, tests=()):
            self._tests = []
            self._removed_tests = 0
            if isinstance(tests, list):
                random.shuffle(tests)
            self.addTests(tests)

        unittest.defaultTestLoader.suiteClass.__init__ = suite_init

    unittest.main(argv=unknown_args)