Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 import contextlib | 5 import contextlib |
| 6 import hashlib | 6 import hashlib |
| 7 | 7 |
| 8 from recipe_engine import recipe_api | 8 from recipe_engine import recipe_api |
| 9 | 9 |
| 10 | 10 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 141 self.m.rietveld.calculate_issue_root(), | 141 self.m.rietveld.calculate_issue_root(), |
| 142 authentication=authentication) | 142 authentication=authentication) |
| 143 elif storage == PATCH_STORAGE_SVN: | 143 elif storage == PATCH_STORAGE_SVN: |
| 144 return self.apply_from_svn(cwd) | 144 return self.apply_from_svn(cwd) |
| 145 elif storage == PATCH_STORAGE_GIT: | 145 elif storage == PATCH_STORAGE_GIT: |
| 146 return self.apply_from_git(cwd) | 146 return self.apply_from_git(cwd) |
| 147 else: | 147 else: |
| 148 # Since this method is "maybe", we don't raise an Exception. | 148 # Since this method is "maybe", we don't raise an Exception. |
| 149 pass | 149 pass |
| 150 | 150 |
| 151 def get_files_affected_by_patch(self): | 151 def get_files_affected_by_patch(self, patch_root=None): |
| 152 """Returns list of paths to files affected by the patch. | |
| 153 | |
| 154 Argument: | |
| 155 patch_root: path relative to api.path['root'], usually obtained from | |
| 156 api.gclient.calculate_patch_root(patch_project) | |
| 157 | |
| 158 Returned paths will be relative to to patch_root. | |
| 159 | |
| 160 TODO(tandrii): remove this doc. | |
| 161 Unless you use patch_root=None, in which case old behavior is used | |
| 162 which returns paths relative to checkout aka solution[0].name. | |
| 163 """ | |
| 164 # patch_root must be set! None is for backwards compataibility and will be | |
| 165 # removed. | |
| 166 if patch_root is None: | |
| 167 return self._old_get_files_affected_by_patch() | |
| 168 step_result = self.m.git('diff', '--cached', '--name-only', | |
| 169 cwd=self.m.path['slave_build'].join(patch_root), | |
| 170 name='git diff to analyze patch', | |
| 171 stdout=self.m.raw_io.output(), | |
| 172 step_test_data=lambda: | |
| 173 self.m.raw_io.test_api.stream_output('foo.cc')) | |
| 174 paths = [self.m.path.join(patch_root, p) for p in | |
| 175 step_result.stdout.split()] | |
| 176 if self.m.platform.is_win: | |
|
Michael Achenbach
2016/05/02 06:44:32
nit: Some tabs sneaked in?
tandrii(chromium)
2016/05/02 09:56:36
Done.
| |
| 177 » » » # Looks like "analyze" wants POSIX slashes even on Windo ws (since git | |
| 178 » » » # uses that format even on Windows). | |
| 179 paths = [path.replace('\\', '/') for path in paths] | |
| 180 step_result.presentation.logs['files'] = paths | |
| 181 return paths | |
| 182 | |
| 183 | |
| 184 def _old_get_files_affected_by_patch(self): | |
| 152 git_diff_kwargs = {} | 185 git_diff_kwargs = {} |
| 153 issue_root = self.m.rietveld.calculate_issue_root() | 186 issue_root = self.m.rietveld.calculate_issue_root() |
| 154 if issue_root: | 187 if issue_root: |
| 155 git_diff_kwargs['cwd'] = self.m.path['checkout'].join(issue_root) | 188 git_diff_kwargs['cwd'] = self.m.path['checkout'].join(issue_root) |
| 156 step_result = self.m.git('diff', '--cached', '--name-only', | 189 step_result = self.m.git('diff', '--cached', '--name-only', |
| 157 name='git diff to analyze patch', | 190 name='git diff to analyze patch', |
| 158 stdout=self.m.raw_io.output(), | 191 stdout=self.m.raw_io.output(), |
| 159 step_test_data=lambda: | 192 step_test_data=lambda: |
| 160 self.m.raw_io.test_api.stream_output('foo.cc'), | 193 self.m.raw_io.test_api.stream_output('foo.cc'), |
| 161 **git_diff_kwargs) | 194 **git_diff_kwargs) |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 238 self.add_failure_reason(e.reason) | 271 self.add_failure_reason(e.reason) |
| 239 | 272 |
| 240 failure_hash = hashlib.sha1() | 273 failure_hash = hashlib.sha1() |
| 241 failure_hash.update(self.m.json.dumps(self._failure_reasons)) | 274 failure_hash.update(self.m.json.dumps(self._failure_reasons)) |
| 242 | 275 |
| 243 step_result = self.m.step.active_result | 276 step_result = self.m.step.active_result |
| 244 step_result.presentation.properties['failure_hash'] = \ | 277 step_result.presentation.properties['failure_hash'] = \ |
| 245 failure_hash.hexdigest() | 278 failure_hash.hexdigest() |
| 246 | 279 |
| 247 raise | 280 raise |
| OLD | NEW |