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

Side by Side Diff: gclient_utils.py

Issue 3192001: Force LANGUAGE=en to fix svn output parsing (Closed)
Patch Set: fix unit tests Created 10 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
« no previous file with comments | « no previous file | tests/gclient_utils_test.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 # Copyright 2009 Google Inc. All Rights Reserved. 1 # Copyright 2009 Google Inc. All Rights Reserved.
2 # 2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); 3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License. 4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at 5 # You may obtain a copy of the License at
6 # 6 #
7 # http://www.apache.org/licenses/LICENSE-2.0 7 # http://www.apache.org/licenses/LICENSE-2.0
8 # 8 #
9 # Unless required by applicable law or agreed to in writing, software 9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, 10 # distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 def CheckCall(command, cwd=None, print_error=True): 42 def CheckCall(command, cwd=None, print_error=True):
43 """Like subprocess.check_call() but returns stdout. 43 """Like subprocess.check_call() but returns stdout.
44 44
45 Works on python 2.4 45 Works on python 2.4
46 """ 46 """
47 logging.debug('%s, cwd=%s' % (str(command), str(cwd))) 47 logging.debug('%s, cwd=%s' % (str(command), str(cwd)))
48 try: 48 try:
49 stderr = None 49 stderr = None
50 if not print_error: 50 if not print_error:
51 stderr = subprocess.PIPE 51 stderr = subprocess.PIPE
52 env = os.environ.copy()
53 env['LANGUAGE'] = 'en'
52 process = subprocess.Popen(command, cwd=cwd, 54 process = subprocess.Popen(command, cwd=cwd,
53 shell=sys.platform.startswith('win'), 55 shell=sys.platform.startswith('win'),
54 stdout=subprocess.PIPE, 56 stdout=subprocess.PIPE,
55 stderr=stderr) 57 stderr=stderr,
58 env=env)
56 std_out, std_err = process.communicate() 59 std_out, std_err = process.communicate()
57 except OSError, e: 60 except OSError, e:
58 raise CheckCallError(command, cwd, e.errno, None) 61 raise CheckCallError(command, cwd, e.errno, None)
59 if process.returncode: 62 if process.returncode:
60 raise CheckCallError(command, cwd, process.returncode, std_out, std_err) 63 raise CheckCallError(command, cwd, process.returncode, std_out, std_err)
61 return std_out, std_err 64 return std_out, std_err
62 65
63 66
64 def SplitUrlRevision(url): 67 def SplitUrlRevision(url):
65 """Splits url and returns a two-tuple: url, rev""" 68 """Splits url and returns a two-tuple: url, rev"""
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 trimmed. 268 trimmed.
266 269
267 If the command fails, as indicated by a nonzero exit status, gclient will 270 If the command fails, as indicated by a nonzero exit status, gclient will
268 exit with an exit status of fail_status. If fail_status is None (the 271 exit with an exit status of fail_status. If fail_status is None (the
269 default), gclient will raise an Error exception. 272 default), gclient will raise an Error exception.
270 """ 273 """
271 logging.debug(command) 274 logging.debug(command)
272 if print_messages: 275 if print_messages:
273 print('\n________ running \'%s\' in \'%s\'' 276 print('\n________ running \'%s\' in \'%s\''
274 % (' '.join(command), in_directory)) 277 % (' '.join(command), in_directory))
278 env = os.environ.copy()
279 env['LANGUAGE'] = 'en'
275 280
276 # *Sigh*: Windows needs shell=True, or else it won't search %PATH% for the 281 # *Sigh*: Windows needs shell=True, or else it won't search %PATH% for the
277 # executable, but shell=True makes subprocess on Linux fail when it's called 282 # executable, but shell=True makes subprocess on Linux fail when it's called
278 # with a list because it only tries to execute the first item in the list. 283 # with a list because it only tries to execute the first item in the list.
279 kid = subprocess.Popen(command, bufsize=0, cwd=in_directory, 284 kid = subprocess.Popen(command, bufsize=0, cwd=in_directory,
280 shell=(sys.platform == 'win32'), stdout=subprocess.PIPE, 285 shell=(sys.platform == 'win32'), stdout=subprocess.PIPE,
281 stderr=subprocess.STDOUT) 286 stderr=subprocess.STDOUT, env=env)
282 287
283 # Do a flush of sys.stdout before we begin reading from the subprocess's 288 # Do a flush of sys.stdout before we begin reading from the subprocess's
284 # stdout. 289 # stdout.
285 last_flushed_at = time.time() 290 last_flushed_at = time.time()
286 sys.stdout.flush() 291 sys.stdout.flush()
287 292
288 # Also, we need to forward stdout to prevent weird re-ordering of output. 293 # Also, we need to forward stdout to prevent weird re-ordering of output.
289 # This has to be done on a per byte basis to make sure it is not buffered: 294 # This has to be done on a per byte basis to make sure it is not buffered:
290 # normally buffering is done for each line, but if svn requests input, no 295 # normally buffering is done for each line, but if svn requests input, no
291 # end-of-line character is output after the prompt and it would not show up. 296 # end-of-line character is output after the prompt and it would not show up.
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 if exception: 520 if exception:
516 self.parent.exceptions.append(exception) 521 self.parent.exceptions.append(exception)
517 if self.parent.progress: 522 if self.parent.progress:
518 self.parent.progress.update(1) 523 self.parent.progress.update(1)
519 assert not self.item.name in self.parent.ran 524 assert not self.item.name in self.parent.ran
520 if not self.item.name in self.parent.ran: 525 if not self.item.name in self.parent.ran:
521 self.parent.ran.append(self.item.name) 526 self.parent.ran.append(self.item.name)
522 finally: 527 finally:
523 self.parent.ready_cond.notifyAll() 528 self.parent.ready_cond.notifyAll()
524 self.parent.ready_cond.release() 529 self.parent.ready_cond.release()
OLDNEW
« no previous file with comments | « no previous file | tests/gclient_utils_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698