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

Side by Side Diff: scripts/slave/recipe_modules/crrev/api.py

Issue 2247373002: Refactor stages 1, 2 and test_api overhaul. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Created 4 years, 4 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
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from recipe_engine import recipe_api 5 from recipe_engine import recipe_api
6 6
7 import re 7 import re
8 8
9 9
10 class CrrevApi(recipe_api.RecipeApi): 10 class CrrevApi(recipe_api.RecipeApi):
11 """Recipe module for making requests to crrev.com.""" 11 """Recipe module for making requests to crrev.com."""
12 12
13 def __call__(self, step_name, request_path, request_params=None, attempts=3): 13 def __call__(self, step_name, request_path, request_params=None, attempts=3,
14 **kwargs):
14 step_result = self.m.python( 15 step_result = self.m.python(
15 step_name, 16 step_name,
16 self.resource('crrev_client.py'), 17 self.resource('crrev_client.py'),
17 [ 18 [
18 request_path, 19 request_path,
19 '--params-file', self.m.json.input(request_params or {}), 20 '--params-file', self.m.json.input(request_params or {}),
20 '--attempts', str(attempts), 21 '--attempts', str(attempts),
21 ], 22 ],
22 stdout=self.m.json.output()) 23 stdout=self.m.json.output(), **kwargs)
23 return step_result.stdout 24 return step_result.stdout
24 25
25 def to_commit_hash( 26 def to_commit_hash(
26 self, commit_position, project='chromium', repo='chromium/src', 27 self, commit_position, project='chromium', repo='chromium/src',
27 attempts=3, step_name=None): 28 attempts=3, step_name=None, **kwargs):
28 """Fetches the corresponding commit hash for a commit position.""" 29 """Fetches the corresponding commit hash for a commit position."""
29 branch, number = self.m.commit_position.parse(commit_position) 30 branch, number = self.m.commit_position.parse(commit_position)
30 params = { 31 params = {
31 'numbering_type': 'COMMIT_POSITION', 32 'numbering_type': 'COMMIT_POSITION',
32 'numbering_identifier': branch, 33 'numbering_identifier': branch,
33 'number': number, 34 'number': number,
34 'project': project, 35 'project': project,
35 'repo': repo, 36 'repo': repo,
36 } 37 }
37 step_name = step_name or 'crrev get commit hash for ' + commit_position 38 step_name = step_name or 'crrev get commit hash for ' + commit_position
38 try: 39 try:
39 result = self(step_name, 'get_numbering', params, attempts) 40 result = self(step_name, 'get_numbering', params, attempts, **kwargs)
40 return result['git_sha'] 41 return result['git_sha']
41 except (self.m.step.StepFailure, KeyError): 42 except (self.m.step.StepFailure, KeyError):
42 raise self.m.step.StepFailure('Could not resolve ' + commit_position) 43 raise self.m.step.StepFailure('Could not resolve ' + commit_position)
43 44
44 def to_commit_position(self, commit_hash, attempts=3, step_name=None): 45 def to_commit_position(self, commit_hash, attempts=3, step_name=None):
45 """Fetches a commit position string given a commit hash.""" 46 """Fetches a commit position string given a commit hash."""
46 if not re.match(r'^[0-9a-zA-Z]{40}$', commit_hash): 47 if not re.match(r'^[0-9a-zA-Z]{40}$', commit_hash):
47 raise ValueError('Not a full 40-digit SHA1 hash (%s)' % commit_hash) 48 raise ValueError('Not a full 40-digit SHA1 hash (%s)' % commit_hash)
48 step_name = step_name or 'crrev get commit position for ' + commit_hash 49 step_name = step_name or 'crrev get commit position for ' + commit_hash
49 try: 50 try:
50 result = self(step_name, 'commit_path/' + commit_hash, attempts=attempts) 51 result = self(step_name, 'commit_path/' + commit_hash, attempts=attempts)
51 numberings = result['numberings'] 52 numberings = result['numberings']
52 except (self.m.step.StepFailure, KeyError): 53 except (self.m.step.StepFailure, KeyError):
53 raise self.m.step.StepFailure('Could not resolve ' + commit_hash) 54 raise self.m.step.StepFailure('Could not resolve ' + commit_hash)
54 for numbering in numberings: 55 for numbering in numberings:
55 if numbering['numbering_type'] == 'COMMIT_POSITION': 56 if numbering['numbering_type'] == 'COMMIT_POSITION':
56 branch = numbering['numbering_identifier'] 57 branch = numbering['numbering_identifier']
57 number = numbering['number'] 58 number = numbering['number']
58 return self.m.commit_position.construct(branch, number) 59 return self.m.commit_position.construct(branch, number)
59 raise self.m.step.StepFailure('No commit position for ' + commit_hash) 60 raise self.m.step.StepFailure('No commit position for ' + commit_hash)
60 61
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698