diff options
-rw-r--r-- | compose/cli/utils.py | 2 | ||||
-rw-r--r-- | tests/unit/cli/utils_test.py | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/compose/cli/utils.py b/compose/cli/utils.py index 4cc055cc..bd06beef 100644 --- a/compose/cli/utils.py +++ b/compose/cli/utils.py @@ -137,7 +137,7 @@ def human_readable_file_size(size): if order >= len(suffixes): order = len(suffixes) - 1 - return '{0:.3g} {1}'.format( + return '{0:.4g} {1}'.format( size / float(1 << (order * 10)), suffixes[order] ) diff --git a/tests/unit/cli/utils_test.py b/tests/unit/cli/utils_test.py index 26524ff3..b340fb94 100644 --- a/tests/unit/cli/utils_test.py +++ b/tests/unit/cli/utils_test.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import unittest +from compose.cli.utils import human_readable_file_size from compose.utils import unquote_path @@ -21,3 +22,23 @@ class UnquotePathTest(unittest.TestCase): assert unquote_path('""hello""') == '"hello"' assert unquote_path('"hel"lo"') == 'hel"lo' assert unquote_path('"hello""') == 'hello"' + + +class HumanReadableFileSizeTest(unittest.TestCase): + def test_100b(self): + assert human_readable_file_size(100) == '100 B' + + def test_1kb(self): + assert human_readable_file_size(1024) == '1 kB' + + def test_1023b(self): + assert human_readable_file_size(1023) == '1023 B' + + def test_units(self): + assert human_readable_file_size((2 ** 10) ** 0) == '1 B' + assert human_readable_file_size((2 ** 10) ** 1) == '1 kB' + assert human_readable_file_size((2 ** 10) ** 2) == '1 MB' + assert human_readable_file_size((2 ** 10) ** 3) == '1 GB' + assert human_readable_file_size((2 ** 10) ** 4) == '1 TB' + assert human_readable_file_size((2 ** 10) ** 5) == '1 PB' + assert human_readable_file_size((2 ** 10) ** 6) == '1 EB' |