Plugin.call() now uses errors2 version of SubprocessError

This commit is contained in:
Jason Gerard DeRose 2009-01-03 18:02:58 -07:00
parent 6b6e6b1cab
commit bb6e9cfe9f
3 changed files with 13 additions and 10 deletions

View File

@ -67,15 +67,19 @@ class SubprocessError(PrivateError):
For example:
>>> raise SubprocessError(returncode=2, argv=('ls', '-lh', '/no-foo/'))
Traceback (most recent call last):
...
SubprocessError: return code 2 from ('ls', '-lh', '/no-foo/')
The exit code of the sub-process is available via the ``returncode``
instance attribute. For example:
>>> e = SubprocessError(returncode=1, argv=('/bin/false',))
>>> e.returncode
1
>>> e.argv
>>> e.argv # argv is also available
('/bin/false',)
>>> e.message
"return code 1 from ('/bin/false',)"
>>> str(e)
"return code 1 from ('/bin/false',)"
"""
format = 'return code %(returncode)d from %(argv)r'

View File

@ -291,9 +291,9 @@ class Plugin(ReadOnly):
"""
argv = (executable,) + args
self.debug('Calling %r', argv)
returncode = subprocess.call(argv)
if returncode != 0:
raise errors.SubprocessError(returncode, argv)
code = subprocess.call(argv)
if code != 0:
raise errors2.SubprocessError(returncode=code, argv=argv)
def __repr__(self):
"""

View File

@ -372,8 +372,7 @@ class test_Plugin(ClassChecker):
"""
o = self.cls()
o.call('/bin/true') is None
e = raises(errors.SubprocessError, o.call, '/bin/false')
assert str(e) == 'return code %d from %r' % (1, ('/bin/false',))
e = raises(errors2.SubprocessError, o.call, '/bin/false')
assert e.returncode == 1
assert e.argv == ('/bin/false',)