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

Side by Side Diff: appengine/third_party_local/depot_tools/subprocess2.py

Issue 1052993003: Roll multiple files from depot_tools into luci. (Closed) Base URL: git@github.com:luci/luci-py.git@master
Patch Set: Created 5 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
OLDNEW
1 # coding=utf8 1 # coding=utf8
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 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 """Collection of subprocess wrapper functions. 5 """Collection of subprocess wrapper functions.
6 6
7 In theory you shouldn't need anything else in subprocess, or this module failed. 7 In theory you shouldn't need anything else in subprocess, or this module failed.
8 """ 8 """
9 9
10 import cStringIO 10 import cStringIO
(...skipping 16 matching lines...) Expand all
27 TIMED_OUT = -2001 27 TIMED_OUT = -2001
28 28
29 # Globals. 29 # Globals.
30 # Set to True if you somehow need to disable this hack. 30 # Set to True if you somehow need to disable this hack.
31 SUBPROCESS_CLEANUP_HACKED = False 31 SUBPROCESS_CLEANUP_HACKED = False
32 32
33 33
34 class CalledProcessError(subprocess.CalledProcessError): 34 class CalledProcessError(subprocess.CalledProcessError):
35 """Augment the standard exception with more data.""" 35 """Augment the standard exception with more data."""
36 def __init__(self, returncode, cmd, cwd, stdout, stderr): 36 def __init__(self, returncode, cmd, cwd, stdout, stderr):
37 super(CalledProcessError, self).__init__(returncode, cmd) 37 super(CalledProcessError, self).__init__(returncode, cmd, output=stdout)
38 self.stdout = stdout 38 self.stdout = self.output # for backward compatibility.
39 self.stderr = stderr 39 self.stderr = stderr
40 self.cwd = cwd 40 self.cwd = cwd
41 41
42 def __str__(self): 42 def __str__(self):
43 out = 'Command %s returned non-zero exit status %s' % ( 43 out = 'Command %s returned non-zero exit status %s' % (
44 ' '.join(self.cmd), self.returncode) 44 ' '.join(self.cmd), self.returncode)
45 if self.cwd: 45 if self.cwd:
46 out += ' in ' + self.cwd 46 out += ' in ' + self.cwd
47 return '\n'.join(filter(None, (out, self.stdout, self.stderr))) 47 return '\n'.join(filter(None, (out, self.stdout, self.stderr)))
48 48
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 # Convert fork() emulation failure into a CygwinRebaseError(). 240 # Convert fork() emulation failure into a CygwinRebaseError().
241 raise CygwinRebaseError( 241 raise CygwinRebaseError(
242 e.errno, 242 e.errno,
243 args, 243 args,
244 kwargs.get('cwd'), 244 kwargs.get('cwd'),
245 None, 245 None,
246 'Visit ' 246 'Visit '
247 'http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure ' 247 'http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure '
248 'to learn how to fix this error; you need to rebase your cygwin ' 248 'to learn how to fix this error; you need to rebase your cygwin '
249 'dlls') 249 'dlls')
250 # Popen() can throw OSError when cwd or args[0] doesn't exist. Let it go 250 # Popen() can throw OSError when cwd or args[0] doesn't exist.
251 # through 251 raise OSError('Execution failed with error: %s.\n'
252 raise 252 'Check that %s or %s exist and have execution permission.'
253 % (str(e), kwargs.get('cwd'), args[0]))
253 254
254 def _tee_threads(self, input): # pylint: disable=W0622 255 def _tee_threads(self, input): # pylint: disable=W0622
255 """Does I/O for a process's pipes using threads. 256 """Does I/O for a process's pipes using threads.
256 257
257 It's the simplest and slowest implementation. Expect very slow behavior. 258 It's the simplest and slowest implementation. Expect very slow behavior.
258 259
259 If there is a callback and it doesn't keep up with the calls, the timeout 260 If there is a callback and it doesn't keep up with the calls, the timeout
260 effectiveness will be delayed accordingly. 261 effectiveness will be delayed accordingly.
261 """ 262 """
262 # Queue of either of <threadname> when done or (<threadname>, data). In 263 # Queue of either of <threadname> when done or (<threadname>, data). In
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 504
504 Captures stdout of a process call and returns stdout only. 505 Captures stdout of a process call and returns stdout only.
505 506
506 - Throws if return code is not 0. 507 - Throws if return code is not 0.
507 - Works even prior to python 2.7. 508 - Works even prior to python 2.7.
508 - Blocks stdin by default if not specified since no output will be visible. 509 - Blocks stdin by default if not specified since no output will be visible.
509 - As per doc, "The stdout argument is not allowed as it is used internally." 510 - As per doc, "The stdout argument is not allowed as it is used internally."
510 """ 511 """
511 kwargs.setdefault('stdin', VOID) 512 kwargs.setdefault('stdin', VOID)
512 if 'stdout' in kwargs: 513 if 'stdout' in kwargs:
513 raise ValueError('stdout argument not allowed, it will be overridden.') 514 raise ValueError('stdout argument not allowed, it would be overridden.')
514 return check_call_out(args, stdout=PIPE, **kwargs)[0] 515 return check_call_out(args, stdout=PIPE, **kwargs)[0]
OLDNEW
« no previous file with comments | « appengine/third_party_local/depot_tools/subcommand.py ('k') | client/third_party/depot_tools/README.swarming » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698