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

Side by Side Diff: checkout.py

Issue 7860041: Update subprocess2.check_output() to behave like subprocess.check_output(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: update comment and docstring, they were unclear Created 9 years, 3 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 | « PRESUBMIT.py ('k') | gclient_scm.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) 2011 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 """Manages a project checkout. 5 """Manages a project checkout.
6 6
7 Includes support for svn, git-svn and git. 7 Includes support for svn, git-svn and git.
8 """ 8 """
9 9
10 from __future__ import with_statement 10 from __future__ import with_statement
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 133
134 filepath = os.path.join(self.project_path, p.filename) 134 filepath = os.path.join(self.project_path, p.filename)
135 if p.is_binary: 135 if p.is_binary:
136 with open(filepath, 'wb') as f: 136 with open(filepath, 'wb') as f:
137 f.write(p.get()) 137 f.write(p.get())
138 else: 138 else:
139 if p.diff_hunks: 139 if p.diff_hunks:
140 stdout = subprocess2.check_output( 140 stdout = subprocess2.check_output(
141 ['patch', '-p%s' % p.patchlevel], 141 ['patch', '-p%s' % p.patchlevel],
142 stdin=p.get(), 142 stdin=p.get(),
143 stderr=subprocess2.STDOUT,
143 cwd=self.project_path) 144 cwd=self.project_path)
144 elif p.is_new and not os.path.exists(filepath): 145 elif p.is_new and not os.path.exists(filepath):
145 # There is only a header. Just create the file. 146 # There is only a header. Just create the file.
146 open(filepath, 'w').close() 147 open(filepath, 'w').close()
147 for post in (self.post_processors or []): 148 for post in (self.post_processors or []):
148 post(self, p) 149 post(self, p)
149 except OSError, e: 150 except OSError, e:
150 raise PatchApplicationFailed(p.filename, '%s%s' % (stdout, e)) 151 raise PatchApplicationFailed(p.filename, '%s%s' % (stdout, e))
151 except subprocess.CalledProcessError, e: 152 except subprocess.CalledProcessError, e:
152 raise PatchApplicationFailed( 153 raise PatchApplicationFailed(
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 return subprocess2.check_call_out( 212 return subprocess2.check_call_out(
212 self._add_svn_flags(args, False), **kwargs) 213 self._add_svn_flags(args, False), **kwargs)
213 214
214 def _check_output_svn(self, args, credentials=True, **kwargs): 215 def _check_output_svn(self, args, credentials=True, **kwargs):
215 """Runs svn and throws an exception if the command failed. 216 """Runs svn and throws an exception if the command failed.
216 217
217 Returns the output. 218 Returns the output.
218 """ 219 """
219 kwargs.setdefault('cwd', self.project_path) 220 kwargs.setdefault('cwd', self.project_path)
220 return subprocess2.check_output( 221 return subprocess2.check_output(
221 self._add_svn_flags(args, True, credentials), **kwargs) 222 self._add_svn_flags(args, True, credentials),
223 stderr=subprocess2.STDOUT,
224 **kwargs)
222 225
223 @staticmethod 226 @staticmethod
224 def _parse_svn_info(output, key): 227 def _parse_svn_info(output, key):
225 """Returns value for key from svn info output. 228 """Returns value for key from svn info output.
226 229
227 Case insensitive. 230 Case insensitive.
228 """ 231 """
229 values = {} 232 values = {}
230 key = key.lower() 233 key = key.lower()
231 for line in output.splitlines(False): 234 for line in output.splitlines(False):
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 return subprocess2.check_call_out(['git'] + args, **kwargs) 492 return subprocess2.check_call_out(['git'] + args, **kwargs)
490 493
491 def _call_git(self, args, **kwargs): 494 def _call_git(self, args, **kwargs):
492 """Like check_call but doesn't throw on failure.""" 495 """Like check_call but doesn't throw on failure."""
493 kwargs.setdefault('cwd', self.project_path) 496 kwargs.setdefault('cwd', self.project_path)
494 kwargs.setdefault('stdout', self.VOID) 497 kwargs.setdefault('stdout', self.VOID)
495 return subprocess2.call(['git'] + args, **kwargs) 498 return subprocess2.call(['git'] + args, **kwargs)
496 499
497 def _check_output_git(self, args, **kwargs): 500 def _check_output_git(self, args, **kwargs):
498 kwargs.setdefault('cwd', self.project_path) 501 kwargs.setdefault('cwd', self.project_path)
499 return subprocess2.check_output(['git'] + args, **kwargs) 502 return subprocess2.check_output(
503 ['git'] + args, stderr=subprocess2.STDOUT, **kwargs)
500 504
501 def _branches(self): 505 def _branches(self):
502 """Returns the list of branches and the active one.""" 506 """Returns the list of branches and the active one."""
503 out = self._check_output_git(['branch']).splitlines(False) 507 out = self._check_output_git(['branch']).splitlines(False)
504 branches = [l[2:] for l in out] 508 branches = [l[2:] for l in out]
505 active = None 509 active = None
506 for l in out: 510 for l in out:
507 if l.startswith('*'): 511 if l.startswith('*'):
508 active = l[2:] 512 active = l[2:]
509 break 513 break
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 user, message)) 711 user, message))
708 return 'FAKE' 712 return 'FAKE'
709 713
710 @property 714 @property
711 def project_name(self): 715 def project_name(self):
712 return self.checkout.project_name 716 return self.checkout.project_name
713 717
714 @property 718 @property
715 def project_path(self): 719 def project_path(self):
716 return self.checkout.project_path 720 return self.checkout.project_path
OLDNEW
« no previous file with comments | « PRESUBMIT.py ('k') | gclient_scm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698