improve output in error case

This commit is contained in:
Buck Golemon
2015-01-06 16:25:46 -08:00
parent 645838cb51
commit 7bd1dd977d
2 changed files with 27 additions and 3 deletions

View File

@@ -108,15 +108,23 @@ class CalledProcessError(RuntimeError):
self.output = output
def __str__(self):
output = []
for text in self.output:
if text:
output.append('\n ' + text.replace('\n', '\n '))
else:
output.append('(none)')
return (
'Command: {0!r}\n'
'Return code: {1}\n'
'Expected return code: {2}\n'
'Output: {3!r}\n'.format(
'Output: {3}\n'
'Errors: {4}\n'.format(
self.cmd,
self.returncode,
self.expected_returncode,
self.output,
*output
)
)

View File

@@ -19,7 +19,23 @@ def test_CalledProcessError_str():
"Command: ['git', 'status']\n"
"Return code: 1\n"
"Expected return code: 0\n"
"Output: ('stdout', 'stderr')\n"
"Output: \n"
" stdout\n"
"Errors: \n"
" stderr\n"
)
def test_CalledProcessError_str_nooutput():
error = CalledProcessError(
1, [str('git'), str('status')], 0, (str(''), str(''))
)
assert str(error) == (
"Command: ['git', 'status']\n"
"Return code: 1\n"
"Expected return code: 0\n"
"Output: (none)\n"
"Errors: (none)\n"
)