def get_options(args=None): global _options if _options is None: if args is None: args = sys.argv[1:] _options = _get_parser().parse_args(args) return _options
for testspec in input_iter: if isinstance(testspec, TestResult): # test already failed during discovery, probably an # import failure yield testspec else: yield run_isolated(testspec, self.args) if __name__ == '__main__': exitcode = 0 try: options = _get_parser().parse_args() runner = TestRunner(options) for result in runner.get_iter([options.tests[0]]): break if result.status != 'OK': sys.stderr.write(result.err_msg) exitcode = exit_codes[result.status] save_coverage() except: sys.stderr.write(traceback.format_exc()) exitcode = exit_codes['FAIL'] finally: sys.stdout.flush()
def main(args=None): global runner if args is None: args = sys.argv[1:] options = _get_parser().parse_args(args) options.skip_dirs = [] # read user prefs from ~/.testflo file. create one if it # isn't there homedir = os.path.expanduser('~') rcfile = os.path.join(homedir, '.testflo') if not os.path.isfile(rcfile): with open(rcfile, 'w') as f: f.write("""[testflo] skip_dirs=site-packages, dist-packages, build, contrib """ ) read_config_file(rcfile, options) if options.cfg: read_config_file(options.cfg, options) tests = options.tests if options.testfile: tests += list(read_test_file(options.testfile)) if not tests: tests = [os.getcwd()] def dir_exclude(d): for skip in options.skip_dirs: if fnmatch(os.path.basename(d), skip): return True return False setup_coverage(options) setup_profile(options) with open(options.outfile, 'w') as report: pipeline = [ TestDiscoverer(dir_exclude=dir_exclude).get_iter, ] if options.dryrun: pipeline.extend([ dryrun, ]) else: if options.isolated: try: import mpi4py except ImportError: runner = IsolatedTestRunner(options, args) else: from testflo.mpi import IsolatedMPITestRunner runner = IsolatedMPITestRunner(options, args) else: runner = ConcurrentTestRunner(options) pipeline.append(runner.get_iter) pipeline.extend([ ResultPrinter(verbose=options.verbose).get_iter, ResultSummary().get_iter, ]) if not options.noreport: # mirror results and summary to a report file pipeline.extend([ ResultPrinter(report, verbose=options.verbose).get_iter, ResultSummary(report).get_iter, ]) if options.maxtime > 0: pipeline.append(TimeFilter(options.maxtime).get_iter) retval = run_pipeline(tests, pipeline) finalize_coverage(options) finalize_profile(options) return retval