def test_url_for_issue(self): mock_browser = MockBrowser() status_server = StatusServer(browser=mock_browser, bot_id='123') status_server.update_status('queue name', 'the status') self.assertEqual('queue name', mock_browser.params['queue_name']) self.assertEqual('the status', mock_browser.params['status']) self.assertEqual('123', mock_browser.params['bot_id'])
def __init__(self, path): MultiCommandTool.__init__(self) Host.__init__(self) self._path = path self.status_server = StatusServer() self.wakeup_event = threading.Event() self._deprecated_port = None
class WebKitPatch(MultiCommandTool, Host): global_options = [ make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"), make_option("-d", "--directory", action="append", dest="patch_directories", default=[], help="Directory to look at for changed files"), make_option("--status-host", action="store", dest="status_host", type="string", help="Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted."), make_option("--bot-id", action="store", dest="bot_id", type="string", help="Identifier for this bot (if multiple bots are running for a queue)"), make_option("--seconds-to-sleep", action="store", default=120, type="int", help="Number of seconds to sleep in the task queue."), make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, qt, gtk, ...)."), ] def __init__(self, path): MultiCommandTool.__init__(self) Host.__init__(self) self._path = path self.status_server = StatusServer() self.wakeup_event = threading.Event() self._deprecated_port = None def deprecated_port(self): return self._deprecated_port def path(self): return self._path def should_show_in_main_help(self, command): if not command.show_in_main_help: return False if command.requires_local_commits: return self.scm().supports_local_commits() return True # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well. def handle_global_options(self, options): self.initialize_scm(options.patch_directories) if options.status_host: self.status_server.set_host(options.status_host) if options.bot_id: self.status_server.set_bot_id(options.bot_id) # If options.port is None, we'll get the default port for this platform. self._deprecated_port = DeprecatedPort.port(options.port) def should_execute_command(self, command): if command.requires_local_commits and not self.scm().supports_local_commits(): failure_reason = "%s requires local commits using %s in %s." % (command.name, self.scm().display_name(), self.scm().checkout_root) return (False, failure_reason) return (True, None)
def __init__(self, path): MultiCommandTool.__init__(self) self._path = path self.wakeup_event = threading.Event() self.bugs = Bugzilla() self.buildbot = BuildBot() self.executive = Executive() self._irc = None self._port = None self.user = User() self._scm = None self._checkout = None self.status_server = StatusServer() self.port_factory = port.factory
def __init__(self, path): MultiCommandTool.__init__(self) self._path = path self.wakeup_event = threading.Event() # FIXME: All of these shared objects should move off onto a # separate "Tool" object. WebKitPatch should inherit from # "Tool" and all these objects should use getters/setters instead of # manual getter functions (e.g. scm()). self.bugs = Bugzilla() self.buildbot = BuildBot() self.executive = Executive() self._irc = None self.filesystem = FileSystem() self._port = None self.user = User() self._scm = None self._checkout = None self.status_server = StatusServer() self.port_factory = port.factory self.platform = PlatformInfo()
class WebKitPatch(MultiCommandTool, Host): global_options = [ make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"), make_option("-d", "--directory", action="append", dest="patch_directories", default=[], help="Directory to look at for changed files"), make_option("--status-host", action="store", dest="status_host", type="string", help="Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted."), make_option("--bot-id", action="store", dest="bot_id", type="string", help="Identifier for this bot (if multiple bots are running for a queue)"), make_option("--irc-password", action="store", dest="irc_password", type="string", help="Password to use when communicating via IRC."), make_option("--seconds-to-sleep", action="store", default=120, type="int", help="Number of seconds to sleep in the task queue."), make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, qt, gtk, ...)."), ] def __init__(self, path): MultiCommandTool.__init__(self) Host.__init__(self) self._path = path self.status_server = StatusServer() self.wakeup_event = threading.Event() self._irc = None self._port = None def port(self): return self._port def path(self): return self._path def ensure_irc_connected(self, irc_delegate): if not self._irc: self._irc = ircproxy.IRCProxy(irc_delegate) def irc(self): # We don't automatically construct IRCProxy here because constructing # IRCProxy actually connects to IRC. We want clients to explicitly # connect to IRC. return self._irc def command_completed(self): if self._irc: self._irc.disconnect() def should_show_in_main_help(self, command): if not command.show_in_main_help: return False if command.requires_local_commits: return self.scm().supports_local_commits() return True # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well. def handle_global_options(self, options): self.initialize_scm(options.patch_directories) if options.status_host: self.status_server.set_host(options.status_host) if options.bot_id: self.status_server.set_bot_id(options.bot_id) if options.irc_password: self.irc_password = options.irc_password # If options.port is None, we'll get the default port for this platform. self._port = self.port_factory.get(options.port) def should_execute_command(self, command): if command.requires_local_commits and not self.scm().supports_local_commits(): failure_reason = "%s requires local commits using %s in %s." % (command.name, self.scm().display_name(), self.scm().checkout_root) return (False, failure_reason) return (True, None)
class WebKitPatch(MultiCommandTool): global_options = [ make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"), make_option("--dry-run", action="store_true", dest="dry_run", default=False, help="do not touch remote servers"), make_option("--status-host", action="store", dest="status_host", type="string", help="Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted."), make_option("--bot-id", action="store", dest="bot_id", type="string", help="Identifier for this bot (if multiple bots are running for a queue)"), make_option("--irc-password", action="store", dest="irc_password", type="string", help="Password to use when communicating via IRC."), make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, qt, gtk, ...)."), ] def __init__(self, path): MultiCommandTool.__init__(self) self._path = path self.wakeup_event = threading.Event() self.bugs = Bugzilla() self.buildbot = BuildBot() self.executive = Executive() self._irc = None self._port = None self.user = User() self._scm = None self._checkout = None self.status_server = StatusServer() self.port_factory = port.factory def scm(self): # Lazily initialize SCM to not error-out before command line parsing (or when running non-scm commands). if not self._scm: self._scm = default_scm() return self._scm def checkout(self): if not self._checkout: self._checkout = Checkout(self.scm()) return self._checkout def port(self): return self._port def ensure_irc_connected(self, irc_delegate): if not self._irc: self._irc = IRCProxy(irc_delegate) def irc(self): # We don't automatically construct IRCProxy here because constructing # IRCProxy actually connects to IRC. We want clients to explicitly # connect to IRC. return self._irc def path(self): return self._path def command_completed(self): if self._irc: self._irc.disconnect() def should_show_in_main_help(self, command): if not command.show_in_main_help: return False if command.requires_local_commits: return self.scm().supports_local_commits() return True # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well. def handle_global_options(self, options): self._options = options if options.dry_run: self.scm().dryrun = True self.bugs.dryrun = True if options.status_host: self.status_server.set_host(options.status_host) if options.bot_id: self.status_server.set_bot_id(options.bot_id) if options.irc_password: self.irc_password = options.irc_password # If options.port is None, we'll get the default port for this platform. self._port = WebKitPort.port(options.port) def should_execute_command(self, command): if command.requires_local_commits and not self.scm().supports_local_commits(): failure_reason = "%s requires local commits using %s in %s." % (command.name, self.scm().display_name(), self.scm().checkout_root) return (False, failure_reason) return (True, None)
class WebKitPatch(MultiCommandTool, Host): global_options = [ make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"), make_option("-d", "--directory", action="append", dest="patch_directories", default=[], help="Directory to look at for changed files"), make_option( "--status-host", action="store", dest="status_host", type="string", help= "Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted." ), make_option( "--bot-id", action="store", dest="bot_id", type="string", help= "Identifier for this bot (if multiple bots are running for a queue)" ), make_option("--irc-password", action="store", dest="irc_password", type="string", help="Password to use when communicating via IRC."), make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, qt, gtk, ...)."), ] def __init__(self, path): MultiCommandTool.__init__(self) Host.__init__(self) self._path = path self.status_server = StatusServer() self.wakeup_event = threading.Event() self._irc = None self._deprecated_port = None def deprecated_port(self): return self._deprecated_port def path(self): return self._path def ensure_irc_connected(self, irc_delegate): if not self._irc: self._irc = ircproxy.IRCProxy(irc_delegate) def irc(self): # We don't automatically construct IRCProxy here because constructing # IRCProxy actually connects to IRC. We want clients to explicitly # connect to IRC. return self._irc def command_completed(self): if self._irc: self._irc.disconnect() def should_show_in_main_help(self, command): if not command.show_in_main_help: return False if command.requires_local_commits: return self.scm().supports_local_commits() return True # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well. def handle_global_options(self, options): self.initialize_scm(options.patch_directories) if options.status_host: self.status_server.set_host(options.status_host) if options.bot_id: self.status_server.set_bot_id(options.bot_id) if options.irc_password: self.irc_password = options.irc_password # If options.port is None, we'll get the default port for this platform. self._deprecated_port = DeprecatedPort.port(options.port) def should_execute_command(self, command): if command.requires_local_commits and not self.scm( ).supports_local_commits(): failure_reason = "%s requires local commits using %s in %s." % ( command.name, self.scm().display_name(), self.scm().checkout_root) return (False, failure_reason) return (True, None)
class WebKitPatch(MultiCommandTool, Host): global_options = [ make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"), make_option("-d", "--directory", action="append", dest="patch_directories", default=[], help="Directory to look at for changed files"), make_option( "--status-host", action="store", dest="status_host", type="string", help= "Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted." ), make_option("--status-host-uses-http", action="store_false", default=True, dest="status_host_uses_https", help="Use HTTP when querying the status host."), make_option( "--bot-id", action="store", dest="bot_id", type="string", help= "Identifier for this bot (if multiple bots are running for a queue)" ), make_option("--irc-password", action="store", dest="irc_password", type="string", help="Password to use when communicating via IRC."), make_option("--seconds-to-sleep", action="store", default=120, type="int", help="Number of seconds to sleep in the task queue."), make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, gtk, ...)."), ] def __init__(self, path): MultiCommandTool.__init__(self) Host.__init__(self) self._path = path self.status_server = StatusServer() self.wakeup_event = threading.Event() self._irc = None self._deprecated_port = None def deprecated_port(self): return self._deprecated_port def path(self): return self._path def ensure_irc_connected(self, irc_delegate): if not self._irc: self._irc = ircproxy.IRCProxy(irc_delegate) def irc(self): # We don't automatically construct IRCProxy here because constructing # IRCProxy actually connects to IRC. We want clients to explicitly # connect to IRC. return self._irc def command_completed(self): if self._irc: self._irc.disconnect() def should_show_in_main_help(self, command): if not command.show_in_main_help: return False if command.requires_local_commits: return self.scm().supports_local_commits() return True @staticmethod def _status_server_api_key_from_git(): try: if not Git.in_working_directory(os.getcwd()): return None return Git.read_git_config('webkit.status-api-key') except OSError as e: # Catch and ignore OSError exceptions such as "no such file # or directory" (OSError errno 2), which imply that the Git # command cannot be found/is not installed. _log.warning('Could not read API key from Git: {}'.format(str(e))) return None @staticmethod def _status_server_api_key(): api_key = os.environ.get('WEBKIT_STATUS_API_KEY') if not api_key: api_key = WebKitPatch._status_server_api_key_from_git() return api_key # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well. def handle_global_options(self, options): self.initialize_scm(options.patch_directories) api_key = self._status_server_api_key() if api_key: self.status_server.set_api_key(api_key) if options.status_host: self.status_server.set_host(options.status_host) self.status_server.set_use_https(options.status_host_uses_https) if options.bot_id: self.status_server.set_bot_id(options.bot_id) if options.irc_password: self.irc_password = options.irc_password # If options.port is None, we'll get the default port for this platform. self._deprecated_port = DeprecatedPort.port(options.port) def should_execute_command(self, command): if command.requires_local_commits and not self.scm( ).supports_local_commits(): failure_reason = "%s requires local commits using %s in %s." % ( command.name, self.scm().display_name(), self.scm().checkout_root) return (False, failure_reason) return (True, None)
class WebKitPatch(MultiCommandTool, Host): global_options = [ make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"), make_option("-d", "--directory", action="append", dest="patch_directories", default=[], help="Directory to look at for changed files"), make_option( "--status-host", action="store", dest="status_host", type="string", help= "Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted." ), make_option( "--bot-id", action="store", dest="bot_id", type="string", help= "Identifier for this bot (if multiple bots are running for a queue)" ), make_option("--seconds-to-sleep", action="store", default=120, type="int", help="Number of seconds to sleep in the task queue."), make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, qt, gtk, ...)."), ] def __init__(self, path): MultiCommandTool.__init__(self) Host.__init__(self) self._path = path self.status_server = StatusServer() self.wakeup_event = threading.Event() self._deprecated_port = None def deprecated_port(self): return self._deprecated_port def path(self): return self._path def should_show_in_main_help(self, command): if not command.show_in_main_help: return False if command.requires_local_commits: return self.scm().supports_local_commits() return True # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well. def handle_global_options(self, options): self.initialize_scm(options.patch_directories) if options.status_host: self.status_server.set_host(options.status_host) if options.bot_id: self.status_server.set_bot_id(options.bot_id) # If options.port is None, we'll get the default port for this platform. self._deprecated_port = DeprecatedPort.port(options.port) def should_execute_command(self, command): if command.requires_local_commits and not self.scm( ).supports_local_commits(): failure_reason = "%s requires local commits using %s in %s." % ( command.name, self.scm().display_name(), self.scm().checkout_root) return (False, failure_reason) return (True, None)