os.system(cmd) with open(fn) as f: while 1: ps = f.readline() if not ps: break chunk = ps.split() pid, cmd = chunk[0], chunk[4] if cmd == s: os.kill(int(pid), signal.SIGTERM) os.unlink(fn) if __name__ == '__main__': report_leaks = 0 if report_leaks: gc.enable() gc.set_debug(gc.DEBUG_LEAK & ~gc.DEBUG_SAVEALL) try: Rand.load_file('randpool.dat', -1) unittest.TextTestRunner().run(suite()) Rand.save_file('randpool.dat') finally: zap_servers() if report_leaks: from tests import alltests alltests.dump_garbage()
def main(argv=None): '''Run either all tests, or those specified in argv''' if argv is None: argv = sys.argv # parse options covreport = False failfast = False loglevel = logging.WARNING opts, args = getopt.gnu_getopt(argv[1:], 'hVD', [ 'help', 'coverage', 'fast', 'failfast', 'ff', 'full', '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 and mock filesystem --failfast stop after the first test that fails --ff alias for "--fast --failfast" --full full test for using filesystem without mock --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': if coverage: covreport = True else: print('''\ Can not run test coverage without module 'coverage'. On Ubuntu or Debian install package 'python3-coverage'. ''', file=sys.stderr) sys.exit(1) elif o == '--fast': tests.FAST_TEST = True # set before any test classes are loaded ! elif o == '--failfast': failfast = True elif o == '--ff': # --fast --failfast tests.FAST_TEST = True failfast = True elif o == '--full': tests.FULL_TEST = True elif o in ('-V', '--verbose'): loglevel = logging.INFO elif o in ('-D', '--debug'): loglevel = logging.DEBUG else: assert False, 'Unkown option: %s' % o # Set logging handler (don't use basicConfig here, we already installed stuff) handler = logging.StreamHandler() handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s')) logger = logging.getLogger() logger.setLevel(loglevel) logger.addHandler(handler) #logging.captureWarnings(True) # FIXME - make all test pass with this enabled # Start tracing - before importing the tests if coverage: cov = coverage.coverage(source=['zim'], branch=True) cov.erase() # clean up old date set cov.exclude('assert ') cov.exclude('raise NotImplementedError') cov.start() # Build the test suite loader = unittest.TestLoader() try: 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) except AttributeError as error: # HACK: unittest raises and attribute errors if import of test script # fails try to catch this and show the import error instead - else raise # original error import re m = re.match(r"'module' object has no attribute '(\w+)'", error.args[0]) if m: module = m.group(1) m = __import__('tests.' + module) # should raise ImportError raise error # And run it unittest.installHandler() # Fancy handling for ^C during test result = \ unittest.TextTestRunner(verbosity=2, failfast=failfast, descriptions=False).run(suite) # Stop tracing if coverage: cov.stop() cov.save() # 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 list(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') # print timings with open('test_times.csv', 'w') as out: for name, time in sorted(tests.TIMINGS, reverse=True, key=lambda t: t[1]): out.write("%s,%f\n" % (name, time)) print("Wrote test_times.csv") # Create coverage output if asked to do so if covreport: print('Writing coverage reports...') cov.html_report(directory='./coverage', omit=['zim/inc/*']) 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/'
from tests import unittest if __name__ == '__main__': loader = unittest.TestLoader() suite = loader.discover('tests/') runner = unittest.TextTestRunner() runner.run(suite)
suite = tests.load_tests(loader, None, None) except AttributeError, error: # HACK: unittest raises and attribute errors if import of test script # fails try to catch this and show the import error instead - else raise # original error import re m = re.match(r"'module' object has no attribute '(\w+)'", error.args[0]) if m: module = m.group(1) m = __import__('tests.'+module) # should raise ImportError raise error # 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'