⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 99786 in webkit


Ignore:
Timestamp:
Nov 9, 2011, 5:07:12 PM (15 years ago)
Author:
commit-queue@webkit.org
Message:

Add cc-bugs group to watch changes in chromium graphics
https://bugs.webkit.org/show_bug.cgi?id=71690

Patch by Dana Jansens <danakj@chromium.org> on 2011-11-09
Reviewed by David Levin.

  • Scripts/webkitpy/common/config/committers.py: Make new Account superclass for non-contributor watch accounts
  • Scripts/webkitpy/common/config/committers_unittest.py: Test the Account superclass
  • Scripts/webkitpy/common/config/watchlist: Add cc-bugs@google.com to watch list
  • Scripts/webkitpy/common/watchlist/watchlistparser.py: Check for Accounts also, but require it to be the bugzilla email for any Account/Contributor/etc.
Location:
trunk/Tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r99785 r99786  
     12011-11-09  Dana Jansens  <danakj@chromium.org>
     2
     3        Add cc-bugs group to watch changes in chromium graphics
     4        https://bugs.webkit.org/show_bug.cgi?id=71690
     5
     6        Reviewed by David Levin.
     7
     8        * Scripts/webkitpy/common/config/committers.py: Make new Account superclass for non-contributor watch accounts
     9        * Scripts/webkitpy/common/config/committers_unittest.py: Test the Account superclass
     10        * Scripts/webkitpy/common/config/watchlist: Add cc-bugs@google.com to watch list
     11        * Scripts/webkitpy/common/watchlist/watchlistparser.py: Check for Accounts also, but require it to be the bugzilla email for any Account/Contributor/etc.
     12
    1132011-11-09  Eric Seidel  <eric@webkit.org>
    214
  • trunk/Tools/Scripts/webkitpy/common/config/committers.py

    r99620 r99786  
    3030# WebKit's Python module for committer and reviewer validation.
    3131
    32 class Contributor(object):
     32
     33class Account(object):
    3334    def __init__(self, name, email_or_emails, irc_nickname_or_nicknames=None):
    3435        assert(name)
     
    6970
    7071
     72class Contributor(Account):
     73    def __init__(self, name, email_or_emails, irc_nickname=None):
     74        Account.__init__(self, name, email_or_emails, irc_nickname)
     75        self.is_contributor = True
     76
     77
    7178class Committer(Contributor):
    7279    def __init__(self, name, email_or_emails, irc_nickname=None):
     
    7986        Committer.__init__(self, name, email_or_emails, irc_nickname)
    8087        self.can_review = True
     88
     89
     90# This is a list of email addresses that have bugzilla accounts but are not
     91# used for contributing (such as mailing lists).
     92
     93
     94watchers_who_are_not_contributors = [
     95    Account("Chromium Compositor Bugs", ["cc-bugs@google.com"], ""),
     96    Account("David Levin", ["levin+threading@chromium.org"], ""),
     97    Account("David Levin", ["levin+watchlist@chromium.org"], ""),
     98]
    8199
    82100
     
    361379    Reviewer("David Hyatt", "hyatt@apple.com", ["dhyatt", "hyatt"]),
    362380    Reviewer("David Kilzer", ["ddkilzer@webkit.org", "ddkilzer@apple.com"], "ddkilzer"),
    363     Reviewer("David Levin", ["levin@chromium.org", "levin+threading@chromium.org", "levin+watchlist@chromium.org"], "dave_levin"),
     381    Reviewer("David Levin", "levin@chromium.org", "dave_levin"),
    364382    Reviewer("Dean Jackson", "dino@apple.com", "dino"),
    365383    Reviewer("Dimitri Glazkov", "dglazkov@chromium.org", "dglazkov"),
     
    439457                 committers=committers_unable_to_review,
    440458                 reviewers=reviewers_list,
    441                  contributors=contributors_who_are_not_committers):
     459                 contributors=contributors_who_are_not_committers,
     460                 watchers=watchers_who_are_not_contributors):
     461        self._accounts = watchers + contributors + committers + reviewers
    442462        self._contributors = contributors + committers + reviewers
    443463        self._committers = committers + reviewers
    444464        self._reviewers = reviewers
    445         self._contributors_by_email = {}
     465        self._accounts_by_email = {}
     466        self._accounts_by_login = {}
     467
     468    def accounts(self):
     469        return self._accounts
    446470
    447471    def contributors(self):
     
    454478        return self._reviewers
    455479
    456     def _email_to_contributor_map(self):
    457         if not len(self._contributors_by_email):
    458             for contributor in self._contributors:
    459                 for email in contributor.emails:
    460                     assert(email not in self._contributors_by_email)  # We should never have duplicate emails.
    461                     self._contributors_by_email[email] = contributor
    462         return self._contributors_by_email
     480    def _email_to_account_map(self):
     481        if not len(self._accounts_by_email):
     482            for account in self._accounts:
     483                for email in account.emails:
     484                    assert(email not in self._accounts_by_email)  # We should never have duplicate emails.
     485                    self._accounts_by_email[email] = account
     486        return self._accounts_by_email
     487
     488    def _login_to_account_map(self):
     489        if not len(self._accounts_by_login):
     490            for account in self._accounts:
     491                if account.emails:
     492                    login = account.bugzilla_email()
     493                    assert(login not in self._accounts_by_login)  # We should never have duplicate emails.
     494                    self._accounts_by_login[login] = account
     495        return self._accounts_by_login
     496
     497    def _contributor_only(self, record):
     498        if record and not record.is_contributor:
     499            return None
     500        return record
    463501
    464502    def _committer_only(self, record):
     
    491529        return filter(lambda contributor: contributor.contains_string(string), self.contributors())
    492530
     531    def account_by_login(self, login):
     532        return self._login_to_account_map().get(login.lower())
     533
     534    def account_by_email(self, email):
     535        return self._email_to_account_map().get(email.lower())
     536
    493537    def contributor_by_email(self, email):
    494         return self._email_to_contributor_map().get(email.lower())
     538        return self._contributor_only(self.account_by_email(email))
    495539
    496540    def committer_by_email(self, email):
    497         return self._committer_only(self.contributor_by_email(email))
     541        return self._committer_only(self.account_by_email(email))
    498542
    499543    def reviewer_by_email(self, email):
    500         return self._reviewer_only(self.contributor_by_email(email))
     544        return self._reviewer_only(self.account_by_email(email))
  • trunk/Tools/Scripts/webkitpy/common/config/committers_unittest.py

    r95232 r99786  
    2828
    2929import unittest
    30 from webkitpy.common.config.committers import CommitterList, Contributor, Committer, Reviewer
     30from webkitpy.common.config.committers import Account, CommitterList, Contributor, Committer, Reviewer
    3131
    3232class CommittersTest(unittest.TestCase):
    3333    def test_committer_lookup(self):
     34        account = Account('Test Zero', ['zero@test.com', 'zero@gmail.com'], 'zero')
    3435        committer = Committer('Test One', 'one@test.com', 'one')
    3536        reviewer = Reviewer('Test Two', ['two@test.com', 'Two@rad.com', 'so_two@gmail.com'])
    3637        contributor = Contributor('Test Three', ['Three@test.com'], 'three')
    3738        contributor_with_two_nicknames = Contributor('Other Four', ['otherfour@webkit.org'], ['four', 'otherfour'])
    38         committer_list = CommitterList(committers=[committer], reviewers=[reviewer], contributors=[contributor, contributor_with_two_nicknames])
     39        committer_list = CommitterList(watchers=[account], committers=[committer], reviewers=[reviewer], contributors=[contributor, contributor_with_two_nicknames])
    3940
    4041        # Test valid committer, reviewer and contributor lookup
     42        self.assertEqual(committer_list.account_by_email('zero@test.com'), account)
    4143        self.assertEqual(committer_list.committer_by_email('one@test.com'), committer)
    4244        self.assertEqual(committer_list.reviewer_by_email('two@test.com'), reviewer)
     
    5456        # Test that the first email is assumed to be the Bugzilla email address (for now)
    5557        self.assertEqual(committer_list.committer_by_email('two@rad.com').bugzilla_email(), 'two@test.com')
     58
     59        # Test lookup by login email address
     60        self.assertEqual(committer_list.account_by_login('zero@test.com'), account)
     61        self.assertEqual(committer_list.account_by_login('zero@gmail.com'), None)
     62        self.assertEqual(committer_list.account_by_login('one@test.com'), committer)
     63        self.assertEqual(committer_list.account_by_login('two@test.com'), reviewer)
     64        self.assertEqual(committer_list.account_by_login('Two@rad.com'), None)
     65        self.assertEqual(committer_list.account_by_login('so_two@gmail.com'), None)
    5666
    5767        # Test that a known committer is not returned during reviewer lookup
  • trunk/Tools/Scripts/webkitpy/common/config/watchlist

    r99494 r99786  
    116116        # two different accounts as far as bugzilla is concerned.
    117117        "ChromiumDumpRenderTree": [ "tkent@chromium.org", ],
    118         "ChromiumGraphics": [ "jamesr@chromium.org", ],
     118        "ChromiumGraphics": [ "jamesr@chromium.org", "cc-bugs@google.com" ],
    119119        "ChromiumPublicApi": [ "fishd@chromium.org", ],
    120120        "Forms": [ "tkent@chromium.org", ],
  • trunk/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py

    r97885 r99786  
    147147        self._validate_definitions(messages_definitions_set, self._MESSAGE_RULES, watch_list)
    148148
    149         contributors = CommitterList()
     149        accounts = CommitterList()
    150150        for cc_rule in watch_list.cc_rules:
    151151            # Copy the instructions since we'll be remove items from the original list and
     
    153153            intructions_copy = cc_rule.instructions()[:]
    154154            for email in intructions_copy:
    155                 if not contributors.contributor_by_email(email):
     155                if not accounts.account_by_login(email):
    156156                    cc_rule.remove_instruction(email)
    157157                    self._log_error("The email alias %s which is in the watchlist is not listed as a contributor in committers.py" % email)
Note: See TracChangeset for help on using the changeset viewer.