def loadStats(self, prof_glob): stats = None for file_name in glob.glob(prof_glob): loaded = hotshot.stats.load(file_name) if stats is None: stats = loaded else: stats.add(loaded) return stats
def run(defaults=None, args=None): if args is None: args = sys.argv # Control reporting flags during run old_reporting_flags = doctest.set_unittest_reportflags(0) # Check to see if we are being run as a subprocess. If we are, # then use the resume-layer and defaults passed in. if len(args) > 1 and args[1] == '--resume-layer': args.pop(1) resume_layer = args.pop(1) defaults = [] while len(args) > 1 and args[1] == '--default': args.pop(1) defaults.append(args.pop(1)) sys.stdin = FakeInputContinueGenerator() else: resume_layer = None options = get_options(args, defaults) options.testrunner_defaults = defaults options.resume_layer = resume_layer # Make sure we start with real pdb.set_trace. This is needed # to make tests of the test runner work properly. :) pdb.set_trace = real_pdb_set_trace if options.profile and sys.version_info[:3] <= (2,4,1) and __debug__: print ('Because of a bug in Python < 2.4.1, profiling ' 'during tests requires the -O option be passed to ' 'Python (not the test runner).') sys.exit() if options.coverage: tracer = MyTrace(ignoredirs=[sys.prefix, sys.exec_prefix], ignoremods=["os", "posixpath", "stat"], trace=False, count=True) tracer.start() else: tracer = None if options.profile: prof_prefix = 'tests_profile.' prof_suffix = '.prof' prof_glob = prof_prefix + '*' + prof_suffix # if we are going to be profiling, and this isn't a subprocess, # clean up any stale results files if not options.resume_layer: for file_name in glob.glob(prof_glob): os.unlink(file_name) # set up the output file dummy, file_path = tempfile.mkstemp(prof_suffix, prof_prefix, '.') prof = hotshot.Profile(file_path) prof.start() try: try: failed = run_with_options(options) except EndRun: failed = True finally: if tracer: tracer.stop() if options.profile: prof.stop() prof.close() if options.profile and not options.resume_layer: stats = None for file_name in glob.glob(prof_glob): loaded = hotshot.stats.load(file_name) if stats is None: stats = loaded else: stats.add(loaded) stats.sort_stats('cumulative', 'calls') stats.print_stats(50) if tracer: coverdir = os.path.join(os.getcwd(), options.coverage) r = tracer.results() r.write_results(summary=True, coverdir=coverdir) doctest.set_unittest_reportflags(old_reporting_flags) return failed
def run(defaults=None, args=None): if args is None: args = sys.argv # Control reporting flags during run old_reporting_flags = doctest.set_unittest_reportflags(0) # Check to see if we are being run as a subprocess. If we are, # then use the resume-layer and defaults passed in. if len(args) > 1 and args[1] == '--resume-layer': args.pop(1) resume_layer = args.pop(1) defaults = [] while len(args) > 1 and args[1] == '--default': args.pop(1) defaults.append(args.pop(1)) sys.stdin = FakeInputContinueGenerator() else: resume_layer = None options = get_options(args, defaults) options.testrunner_defaults = defaults options.resume_layer = resume_layer # Make sure we start with real pdb.set_trace. This is needed # to make tests of the test runner work properly. :) pdb.set_trace = real_pdb_set_trace if options.profile and sys.version_info[:3] <= (2, 4, 1) and __debug__: print( 'Because of a bug in Python < 2.4.1, profiling ' 'during tests requires the -O option be passed to ' 'Python (not the test runner).') sys.exit() if options.coverage: tracer = MyTrace(ignoredirs=[sys.prefix, sys.exec_prefix], ignoremods=["os", "posixpath", "stat"], trace=False, count=True) tracer.start() else: tracer = None if options.profile: prof_prefix = 'tests_profile.' prof_suffix = '.prof' prof_glob = prof_prefix + '*' + prof_suffix # if we are going to be profiling, and this isn't a subprocess, # clean up any stale results files if not options.resume_layer: for file_name in glob.glob(prof_glob): os.unlink(file_name) # set up the output file dummy, file_path = tempfile.mkstemp(prof_suffix, prof_prefix, '.') prof = hotshot.Profile(file_path) prof.start() try: try: failed = run_with_options(options) except EndRun: failed = True finally: if tracer: tracer.stop() if options.profile: prof.stop() prof.close() if options.profile and not options.resume_layer: stats = None for file_name in glob.glob(prof_glob): loaded = hotshot.stats.load(file_name) if stats is None: stats = loaded else: stats.add(loaded) stats.sort_stats('cumulative', 'calls') stats.print_stats(50) if tracer: coverdir = os.path.join(os.getcwd(), options.coverage) r = tracer.results() r.write_results(summary=True, coverdir=coverdir) doctest.set_unittest_reportflags(old_reporting_flags) return failed