Changeset 56478 in webkit


Ignore:
Timestamp:
Mar 24, 2010 8:45:11 PM (14 years ago)
Author:
abarth@webkit.org
Message:

2010-03-24 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

webkit-patch or pre-commit hook should validate reviewer lines before committing
https://bugs.webkit.org/show_bug.cgi?id=26927

Validate that patches have valid reivewers listed in their ChangeLogs
before landing. For patches without reviewers can be landed if their
ChangeLogs state that they are unreviewed.

  • Scripts/webkitpy/changelogs.py:
  • Scripts/webkitpy/commands/download.py:
  • Scripts/webkitpy/commitinfo.py:
  • Scripts/webkitpy/commitinfo_unittest.py:
  • Scripts/webkitpy/mock_bugzillatool.py:
  • Scripts/webkitpy/steps/init.py:
  • Scripts/webkitpy/steps/validatereviewer.py: Added.
Location:
trunk/WebKitTools
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r56475 r56478  
     12010-03-24  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        webkit-patch or pre-commit hook should validate reviewer lines before committing
     6        https://bugs.webkit.org/show_bug.cgi?id=26927
     7
     8        Validate that patches have valid reivewers listed in their ChangeLogs
     9        before landing.  For patches without reviewers can be landed if their
     10        ChangeLogs state that they are unreviewed.
     11
     12        * Scripts/webkitpy/changelogs.py:
     13        * Scripts/webkitpy/commands/download.py:
     14        * Scripts/webkitpy/commitinfo.py:
     15        * Scripts/webkitpy/commitinfo_unittest.py:
     16        * Scripts/webkitpy/mock_bugzillatool.py:
     17        * Scripts/webkitpy/steps/__init__.py:
     18        * Scripts/webkitpy/steps/validatereviewer.py: Added.
     19
    1202010-03-19  Holger Hans Peter Freyther  <zecke@selfish.org>
    221
  • trunk/WebKitTools/Scripts/webkitpy/changelogs.py

    r56475 r56478  
    3535
    3636from webkitpy.webkit_logging import log
     37from webkitpy.committers import CommitterList
    3738
    3839def view_source_url(revision_number):
     
    5152    date_line_regexp = r'^(?P<date>\d{4}-\d{2}-\d{2})\s+(?P<name>.+?)\s+<(?P<email>[^<>]+)>$'
    5253
    53     def __init__(self, contents):
     54    def __init__(self, contents, committer_list=CommitterList()):
    5455        self._contents = contents
     56        self._committer_list = committer_list
    5557        self._parse_entry()
    5658
     
    6769        self._reviewer_text = match.group("reviewer") if match else None
    6870
     71        self._reviewer = self._committer_list.committer_by_name(self._reviewer_text)
     72        self._author = self._committer_list.committer_by_email(self._author_email) or self._committer_list.committer_by_name(self._author_name)
     73
    6974    def author_name(self):
    7075        return self._author_name
     
    7378        return self._author_email
    7479
     80    def author(self):
     81        return self._author # Might be None
     82
    7583    # FIXME: Eventually we would like to map reviwer names to reviewer objects.
    7684    # See https://bugs.webkit.org/show_bug.cgi?id=26533
    7785    def reviewer_text(self):
    7886        return self._reviewer_text
     87
     88    def reviewer(self):
     89        return self._reviewer # Might be None
    7990
    8091    def contents(self):
  • trunk/WebKitTools/Scripts/webkitpy/commands/download.py

    r56151 r56478  
    7575        steps.EnsureBuildersAreGreen,
    7676        steps.UpdateChangeLogsWithReviewer,
     77        steps.ValidateReviewer,
    7778        steps.EnsureBuildersAreGreen,
    7879        steps.Build,
     
    210211        steps.Update,
    211212        steps.ApplyPatch,
     213        steps.ValidateReviewer,
    212214        steps.EnsureBuildersAreGreen,
    213215        steps.Build,
  • trunk/WebKitTools/Scripts/webkitpy/commitinfo.py

    r56216 r56478  
    5454        changelog_entry = changelog_entries[0]
    5555        changelog_data = {
    56             "bug_id" : parse_bug_id(changelog_entry.contents()),
    57             "author_name" : changelog_entry.author_name(),
    58             "author_email" : changelog_entry.author_email(),
    59             "reviewer_text" : changelog_entry.reviewer_text(),
     56            "bug_id": parse_bug_id(changelog_entry.contents()),
     57            "author_name": changelog_entry.author_name(),
     58            "author_email": changelog_entry.author_email(),
     59            "author": changelog_entry.author(),
     60            "reviewer_text": changelog_entry.reviewer_text(),
     61            "reviewer": changelog_entry.reviewer(),
    6062        }
    6163        # We could pass the changelog_entry instead of a dictionary here, but that makes
     
    7072        self._author_name = changelog_data["author_name"]
    7173        self._author_email = changelog_data["author_email"]
     74        self._author = changelog_data["author"]
    7275        self._reviewer_text = changelog_data["reviewer_text"]
     76        self._reviewer = changelog_data["reviewer"]
    7377
    7478        # Derived values:
    75         self._reviewer = committer_list.committer_by_name(self._reviewer_text)
    76         self._author = committer_list.committer_by_email(self._author_email) or committer_list.committer_by_name(self._author_name)
    7779        self._committer = committer_list.committer_by_email(committer_email)
    7880
  • trunk/WebKitTools/Scripts/webkitpy/commitinfo_unittest.py

    r56216 r56478  
    3333
    3434class CommitInfoTest(unittest.TestCase):
    35    
     35
    3636    def test_commit_info_creation(self):
    3737        author = Committer("Author", "author@example.com")
     
    4141
    4242        changelog_data = {
    43             "bug_id" : 1234,
    44             "author_name" : "Committer",
    45             "author_email" : "author@example.com",
    46             "reviewer_text" : "Reviewer",
     43            "bug_id": 1234,
     44            "author_name": "Committer",
     45            "author_email": "author@example.com",
     46            "author": author,
     47            "reviewer_text": "Reviewer",
     48            "reviewer": reviewer,
    4749        }
    4850        commit = CommitInfo(123, "committer@example.com", changelog_data, committer_list)
    49        
     51
    5052        self.assertEqual(commit.revision(), 123)
    5153        self.assertEqual(commit.bug_id(), 1234)
  • trunk/WebKitTools/Scripts/webkitpy/mock_bugzillatool.py

    r56470 r56478  
    367367class MockWebKitCheckout(object):
    368368
     369    _committer_list = CommitterList()
     370
    369371    def commit_info_for_revision(self, svn_revision):
    370372        return CommitInfo(svn_revision, "eric@webkit.org", {
     
    372374            "author_name": "Adam Barth",
    373375            "author_email": "abarth@webkit.org",
    374             "reviewer_text": "Darin Adler"
     376            "author": self._committer_list.committer_by_email("abarth@webkit.org"),
     377            "reviewer_text": "Darin Adler",
     378            "reviewer": self._committer_list.committer_by_name("Darin Adler"),
    375379        })
    376380
  • trunk/WebKitTools/Scripts/webkitpy/steps/__init__.py

    r56034 r56478  
    5656from webkitpy.steps.updatechangelogswithreviewer import UpdateChangeLogsWithReviewer
    5757from webkitpy.steps.update import Update
     58from webkitpy.steps.validatereviewer import ValidateReviewer
Note: See TracChangeset for help on using the changeset viewer.