def get_printer(self, args=None): args = args or [] printing_options = printing.print_options() option_parser = optparse.OptionParser(option_list=printing_options) options, args = option_parser.parse_args(args) host = MockHost() self._port = host.port_factory.get('test', options) regular_output = StringIO.StringIO() printer = printing.Printer(host, options, regular_output) return printer, regular_output
def run(port, options, args, logging_stream, stdout): logger = logging.getLogger() logger.setLevel(logging.DEBUG if options.debug_rwt_logging else logging.INFO) printer = printing.Printer(port, options, logging_stream, logger=logger) try: run_details = _run_tests(port, options, args, printer) printer.flush() _log.debug('') _log.debug('Testing completed. Exit status: %d', run_details.exit_code) return run_details finally: printer.cleanup()
def main(argv, stderr): options, args = parse_args(argv) if options.platform and 'test' in options.platform and not 'browser_test' in options.platform: # It's a bit lame to import mocks into real code, but this allows the user # to run tests against the test platform interactively, which is useful for # debugging test failures. from blinkpy.common.host_mock import MockHost host = MockHost() else: host = Host() printer = printing.Printer(host, options, stderr) try: port = host.port_factory.get(options.platform, options) except (NotImplementedError, ValueError) as error: _log.error(error) printer.cleanup() return exit_codes.UNEXPECTED_ERROR_EXIT_STATUS # Spawn ends up with pickle errors while creating workers on fuchsia. if not six.PY2 and ("fuchsia" not in port.port_name): multiprocessing.set_start_method('spawn') try: return run(port, options, args, printer).exit_code # We need to still handle KeyboardInterrupt, at least for blinkpy unittest cases. except KeyboardInterrupt: return exit_codes.INTERRUPTED_EXIT_STATUS except test_run_results.TestRunException as error: _log.error(error.msg) return error.code except BaseException as error: if isinstance(error, Exception): _log.error('\n%s raised: %s', error.__class__.__name__, error) traceback.print_exc(file=stderr) return exit_codes.UNEXPECTED_ERROR_EXIT_STATUS finally: printer.cleanup()