def zim_modules(): '''Get the all module in the zim source''' for file in tests.zim_pyfiles(): name = file[:-3].replace('/', '.') if os.name == 'nt': name = name.replace('\\', '.') if name.endswith('.__init__'): name = name[:-9] mod = __import__(name) for part in name.split('.')[1:]: mod = getattr(mod, part) yield name, mod
def main(argv=None): '''Run either all tests, or those specified in argv''' if argv is None: argv = sys.argv # parse options coverage = None failfast = False loglevel = logging.WARNING opts, args = getopt.gnu_getopt(argv[1:], 'hVD', ['help', 'coverage', 'fast', 'failfast', 'debug', 'verbose']) for o, a in opts: if o in ('-h', '--help'): print '''\ usage: %s [OPTIONS] [MODULES] Where MODULE should a module name from ./tests/ If no module is given the whole test suite is run. Options: -h, --help print this text --fast skip a number of slower tests (assumes --failfast) --failfast stop after the first test that fails --coverage report test coverage statistics -V, --verbose run with verbose output from logging -D, --debug run with debug output from logging ''' % argv[0] return elif o == '--coverage': try: import coverage as coverage_module except ImportError: print >>sys.stderr, '''\ Can not run test coverage without module 'coverage'. On Ubuntu or Debian install package 'python-coverage'. ''' sys.exit(1) #~ coverage = coverage_module.coverage(data_suffix=True, auto_data=True) coverage = coverage_module.coverage(data_suffix=True) coverage.erase() # clean up old date set coverage.exclude('assert ') coverage.exclude('raise NotImplementedError') coverage.start() elif o == '--fast': failfast = True tests.FAST_TEST = True # set before any test classes are loaded ! elif o == '--failfast': failfast = True elif o in ('-V', '--verbose'): loglevel = logging.INFO elif o in ('-D', '--debug'): loglevel = logging.DEBUG else: assert False # Set logging handler logging.basicConfig(level=loglevel, format='%(levelname)s: %(message)s') # Build the test suite loader = unittest.TestLoader() if args: suite = unittest.TestSuite() for module in [ 'tests.'+name for name in args ]: test = loader.loadTestsFromName(module) suite.addTest(test) else: suite = tests.load_tests(loader, None, None) # And run it unittest.installHandler() # Fancy handling for ^C during test result = \ unittest.TextTestRunner(verbosity=2, failfast=failfast, descriptions=False).run(suite) # Check the modules were loaded from the right location # (so no testing based on modules from a previous installed version...) mylib = os.path.abspath('./zim') for module in [m for m in sys.modules.keys() if m == 'zim' or m.startswith('zim.')]: if sys.modules[module] is None: continue file = sys.modules[module].__file__ assert file.startswith(mylib), \ 'Module %s was loaded from %s' % (module, file) test_report(result, 'test_report.html') print '\nWrote test report to test_report.html\n' # Create coverage output if asked to do so if coverage: coverage.stop() #~ coverage.combine() print 'Writing coverage reports...' pyfiles = list(tests.zim_pyfiles()) #~ coverage.report(pyfiles, show_missing=False) #~ coverage.html_report(pyfiles, directory='./coverage', omit=['zim/inc/*']) coverage_report(coverage, pyfiles, './coverage') print 'Done - Coverage reports can be found in ./coverage/'
def main(argv=None): '''Run either all tests, or those specified in argv''' if argv is None: argv = sys.argv # parse options coverage = None failfast = False loglevel = logging.WARNING opts, args = getopt.gnu_getopt(argv[1:], 'hVD', ['help', 'coverage', 'fast', 'failfast', 'debug', 'verbose']) for o, a in opts: if o in ('-h', '--help'): print '''\ usage: %s [OPTIONS] [MODULES] Where MODULE should a module name from ./tests/ If no module is given the whole test suite is run. Options: -h, --help print this text --fast skip a number of slower tests (assumes --failfast) --failfast stop after the first test that fails --coverage report test coverage statistics -V, --verbose run with verbose output from logging -D, --debug run with debug output from logging ''' % argv[0] return elif o == '--coverage': try: import coverage as coverage_module except ImportError: print >>sys.stderr, '''\ Can not run test coverage without module 'coverage'. On Ubuntu or Debian install package 'python-coverage'. ''' sys.exit(1) #~ coverage = coverage_module.coverage(data_suffix=True, auto_data=True) coverage = coverage_module.coverage(data_suffix=True) coverage.erase() # clean up old date set coverage.exclude('assert ') coverage.exclude('raise NotImplementedError') coverage.start() elif o == '--fast': failfast = True tests.FAST_TEST = True # set before any test classes are loaded ! elif o == '--failfast': failfast = True elif o in ('-V', '--verbose'): loglevel = logging.INFO elif o in ('-D', '--debug'): loglevel = logging.DEBUG else: assert False # Set logging handler logging.basicConfig(level=loglevel, format='%(levelname)s: %(message)s') # Build the test suite loader = unittest.TestLoader() if args: suite = unittest.TestSuite() for name in args: module = name if name.startswith('tests.') else 'tests.' + name test = loader.loadTestsFromName(module) suite.addTest(test) else: suite = tests.load_tests(loader, None, None) # And run it unittest.installHandler() # Fancy handling for ^C during test result = \ unittest.TextTestRunner(verbosity=2, failfast=failfast, descriptions=False).run(suite) # Check the modules were loaded from the right location # (so no testing based on modules from a previous installed version...) mylib = os.path.abspath('./zim') for module in [m for m in sys.modules.keys() if m == 'zim' or m.startswith('zim.')]: if sys.modules[module] is None: continue file = sys.modules[module].__file__ assert file.startswith(mylib), \ 'Module %s was loaded from %s' % (module, file) test_report(result, 'test_report.html') print '\nWrote test report to test_report.html\n' # Create coverage output if asked to do so if coverage: coverage.stop() #~ coverage.combine() print 'Writing coverage reports...' pyfiles = list(tests.zim_pyfiles()) #~ coverage.report(pyfiles, show_missing=False) #~ coverage.html_report(pyfiles, directory='./coverage', omit=['zim/inc/*']) coverage_report(coverage, pyfiles, './coverage') print 'Done - Coverage reports can be found in ./coverage/'