Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Side by Side Diff: pending_manager.py

Issue 6880115: Add post_processing code to update copyright year automatically. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/commit-queue
Patch Set: Significantly simplify code Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | post_processors/__init__.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # coding=utf8 1 # coding=utf8
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 """Commit queue manager class. 5 """Commit queue manager class.
6 6
7 Security implications: 7 Security implications:
8 8
9 The following hypothesis are made: 9 The following hypothesis are made:
10 - Commit queue: 10 - Commit queue:
11 - Impersonate the same svn credentials that the patchset owner. 11 - Impersonate the same svn credentials that the patchset owner.
12 - Can't impersonate a non committer. 12 - Can't impersonate a non committer.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 def __init__(self): 105 def __init__(self):
106 super(PendingQueue, self).__init__() 106 super(PendingQueue, self).__init__()
107 self.pending_commits = [] 107 self.pending_commits = []
108 108
109 109
110 class PendingManager(object): 110 class PendingManager(object):
111 """Fetch new issues from rietveld, pass the issues through all of verifiers 111 """Fetch new issues from rietveld, pass the issues through all of verifiers
112 and then commit the patches with checkout. 112 and then commit the patches with checkout.
113 """ 113 """
114 114
115 def __init__(self, rietveld, checkout_obj, pre_patch_verifiers, verifiers): 115 def __init__(self, rietveld, checkout_obj, pre_patch_verifiers, verifiers,
116 post_process):
116 """ 117 """
117 Args: 118 Args:
118 pre_patch_verifiers: Verifiers objects that are run before applying the 119 pre_patch_verifiers: Verifiers objects that are run before applying the
119 patch. 120 patch.
120 verifiers: Verifiers object run after applying the patch. 121 verifiers: Verifiers object run after applying the patch.
122 post_process: List of lambda(checkout, patches) functions that post
123 process an applied patch.
121 """ 124 """
122 assert len(pre_patch_verifiers) or len(verifiers) 125 assert len(pre_patch_verifiers) or len(verifiers)
123 self.rietveld = rietveld 126 self.rietveld = rietveld
124 self.checkout = checkout_obj 127 self.checkout = checkout_obj
125 self.pre_patch_verifiers = pre_patch_verifiers 128 self.pre_patch_verifiers = pre_patch_verifiers or []
126 self.verifiers = verifiers 129 self.verifiers = verifiers or []
130 self.post_process = post_process or []
127 self.all_verifiers = pre_patch_verifiers + verifiers 131 self.all_verifiers = pre_patch_verifiers + verifiers
128 self.queue = PendingQueue() 132 self.queue = PendingQueue()
129 # Assert names are unique. 133 # Assert names are unique.
130 names = [x.name for x in pre_patch_verifiers + verifiers] 134 names = [x.name for x in pre_patch_verifiers + verifiers]
131 assert len(names) == len(set(names)) 135 assert len(names) == len(set(names))
132 136
133 def look_for_new_pending_commit(self): 137 def look_for_new_pending_commit(self):
134 """Looks for new reviews on self.rietveld with c+ set. 138 """Looks for new reviews on self.rietveld with c+ set.
135 139
136 Calls _new_pending_commit() on all new review found. 140 Calls _new_pending_commit() on all new review found.
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 patches = self.rietveld.get_patch(pending.issue, pending.patchset) 293 patches = self.rietveld.get_patch(pending.issue, pending.patchset)
290 if not patches: 294 if not patches:
291 raise base.DiscardPending( 295 raise base.DiscardPending(
292 pending, 'No diff was found for this patchset.') 296 pending, 'No diff was found for this patchset.')
293 if pending.relpath: 297 if pending.relpath:
294 patches.set_relpath(pending.relpath) 298 patches.set_relpath(pending.relpath)
295 pending.files = [p.filename for p in patches] 299 pending.files = [p.filename for p in patches]
296 if not pending.files: 300 if not pending.files:
297 raise base.DiscardPending( 301 raise base.DiscardPending(
298 pending, 'No file was found in this patchset.') 302 pending, 'No file was found in this patchset.')
299 self.checkout.apply_patch(patches) 303 self.checkout.apply_patch(patches, self.post_process)
300 except checkout.PatchApplicationFailed, e: 304 except checkout.PatchApplicationFailed, e:
301 out = 'Can\'t apply patch for file %s.' % e.filename 305 out = 'Can\'t apply patch for file %s.' % e.filename
302 if e.status: 306 if e.status:
303 out += '\n%s' % e.status 307 out += '\n%s' % e.status
304 raise base.DiscardPending(pending, out) 308 raise base.DiscardPending(pending, out)
305 except patch.UnsupportedPatchFormat, e: 309 except patch.UnsupportedPatchFormat, e:
306 raise base.DiscardPending(pending, str(e)) 310 raise base.DiscardPending(pending, str(e))
307 except subprocess.CalledProcessError, e: 311 except subprocess.CalledProcessError, e:
308 stdout = getattr(e, 'stdout', '') 312 stdout = getattr(e, 'stdout', '')
309 out = 'Failed to apply the patch.' 313 out = 'Failed to apply the patch.'
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 raise base.DiscardPending(pending, out) 352 raise base.DiscardPending(pending, out)
349 353
350 def load(self, filename): 354 def load(self, filename):
351 """Loads the commit queue state from a JSON file.""" 355 """Loads the commit queue state from a JSON file."""
352 self.queue = model.load_from_json_file(filename) 356 self.queue = model.load_from_json_file(filename)
353 self.queue.pending_commits = self.queue.pending_commits or [] 357 self.queue.pending_commits = self.queue.pending_commits or []
354 358
355 def save(self, filename): 359 def save(self, filename):
356 """Save the commit queue state in a simple JSON file.""" 360 """Save the commit queue state in a simple JSON file."""
357 model.save_to_json_file(filename, self.queue) 361 model.save_to_json_file(filename, self.queue)
OLDNEW
« no previous file with comments | « no previous file | post_processors/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698