Possible division by zero error when pulling an image - fixes #1463

Signed-off-by: Todd Whiteman <todd.whiteman@joyent.com>
This commit is contained in:
Todd Whiteman 2015-05-26 12:25:52 -07:00
parent 1344099e29
commit b9c502531d
2 changed files with 21 additions and 2 deletions

View File

@ -74,8 +74,9 @@ def print_output_event(event, stream, is_terminal):
stream.write("%s %s%s" % (status, event['progress'], terminator))
elif 'progressDetail' in event:
detail = event['progressDetail']
if 'current' in detail:
percentage = float(detail['current']) / float(detail['total']) * 100
total = detail.get('total')
if 'current' in detail and total:
percentage = float(detail['current']) / float(total) * 100
stream.write('%s (%.1f%%)%s' % (status, percentage, terminator))
else:
stream.write('%s%s' % (status, terminator))

View File

@ -17,3 +17,21 @@ class ProgressStreamTestCase(unittest.TestCase):
]
events = progress_stream.stream_output(output, StringIO())
self.assertEqual(len(events), 1)
def test_stream_output_div_zero(self):
output = [
'{"status": "Downloading", "progressDetail": {"current": '
'0, "start": 1413653874, "total": 0}, '
'"progress": "..."}',
]
events = progress_stream.stream_output(output, StringIO())
self.assertEqual(len(events), 1)
def test_stream_output_null_total(self):
output = [
'{"status": "Downloading", "progressDetail": {"current": '
'0, "start": 1413653874, "total": null}, '
'"progress": "..."}',
]
events = progress_stream.stream_output(output, StringIO())
self.assertEqual(len(events), 1)