mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 01:14:15 +02:00
[commons.util] fix: not properly converting bibyte and byte based sizes to bytes (size_to_byte)
This commit is contained in:
@@ -30,7 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- General
|
- General
|
||||||
- not properly converting bit based sizes (KiB, MiB, etc...) to byte based
|
- not properly converting bibyte (KiB, MiB, ...) and byte (KB, MB, ...) based sizes to bytes
|
||||||
- uninstall and downgrade logs are not available [#255](https://github.com/vinifmor/bauh/issues/255)
|
- uninstall and downgrade logs are not available [#255](https://github.com/vinifmor/bauh/issues/255)
|
||||||
|
|
||||||
- Debian
|
- Debian
|
||||||
|
|||||||
@@ -41,21 +41,24 @@ def size_to_byte(size: Union[float, int, str], unit: str, logger: Optional[Logge
|
|||||||
else:
|
else:
|
||||||
final_size = float(size)
|
final_size = float(size)
|
||||||
|
|
||||||
if unit == 'b' or len(lower_unit) > 1 and lower_unit.endswith('ib'):
|
if unit == 'b':
|
||||||
final_size /= 8
|
return final_size / 8
|
||||||
|
|
||||||
if lower_unit[0] == 'b':
|
if unit == 'B':
|
||||||
return final_size
|
return final_size
|
||||||
elif lower_unit[0] == 'k':
|
|
||||||
return final_size * 1024
|
base = 1024 if lower_unit.endswith('ib') else 1000
|
||||||
|
|
||||||
|
if lower_unit[0] == 'k':
|
||||||
|
return final_size * base
|
||||||
elif lower_unit[0] == 'm':
|
elif lower_unit[0] == 'm':
|
||||||
return final_size * (1024 ** 2)
|
return final_size * (base ** 2)
|
||||||
elif lower_unit[0] == 'g':
|
elif lower_unit[0] == 'g':
|
||||||
return final_size * (1024 ** 3)
|
return final_size * (base ** 3)
|
||||||
elif lower_unit[0] == 't':
|
elif lower_unit[0] == 't':
|
||||||
return final_size * (1024 ** 4)
|
return final_size * (base ** 4)
|
||||||
else:
|
else:
|
||||||
return final_size * (1024 ** 5)
|
return final_size * (base ** 5)
|
||||||
|
|
||||||
|
|
||||||
def datetime_as_milis(date: datetime = datetime.utcnow()) -> int:
|
def datetime_as_milis(date: datetime = datetime.utcnow()) -> int:
|
||||||
|
|||||||
@@ -5,40 +5,44 @@ from bauh.commons.util import size_to_byte
|
|||||||
|
|
||||||
class SizeToByteTest(TestCase):
|
class SizeToByteTest(TestCase):
|
||||||
|
|
||||||
def test_must_return_right_number_of_bytes(self):
|
def test_must_return_right_number_of_bytes_for_bit_size(self):
|
||||||
self.assertEqual(1.0, size_to_byte(1, 'B'))
|
self.assertEqual(0.125, size_to_byte(1, 'b'))
|
||||||
self.assertEqual(1024, size_to_byte(1, 'K'))
|
self.assertEqual(0.250, size_to_byte(2, 'b'))
|
||||||
self.assertEqual(58675.2, size_to_byte(57.3, 'K'))
|
self.assertEqual(0.40625, size_to_byte(3.25, 'b'))
|
||||||
self.assertEqual(1048576, size_to_byte(1, 'M'))
|
|
||||||
self.assertEqual(60083404.8, size_to_byte(57.3, 'M'))
|
|
||||||
self.assertEqual(1073741824, size_to_byte(1, 'G'))
|
|
||||||
self.assertEqual(61525406515.2, size_to_byte(57.3, 'G'))
|
|
||||||
self.assertEqual(1099511627776, size_to_byte(1, 'T'))
|
|
||||||
self.assertEqual(63002016271564.8, size_to_byte(57.3, 'T'))
|
|
||||||
self.assertEqual(1125899906842624, size_to_byte(1, 'P'))
|
|
||||||
self.assertEqual(6383852471797678, size_to_byte(5.67, 'P'))
|
|
||||||
|
|
||||||
def test_must_return_right_number_of_bytes_for_bit_units(self):
|
def test_must_return_right_number_of_bytes_for_byte_based_units(self):
|
||||||
self.assertEqual(1, size_to_byte(8, 'b'))
|
self.assertEqual(1.0, size_to_byte(1, 'B'))
|
||||||
self.assertEqual(2, size_to_byte(16, 'b'))
|
self.assertEqual(587, size_to_byte(587, 'B'))
|
||||||
self.assertEqual(128, size_to_byte(1, 'KiB'))
|
self.assertEqual(1000, size_to_byte(1, 'K'))
|
||||||
self.assertEqual(197460.48, size_to_byte(1542.66, 'KiB'))
|
self.assertEqual(57300, size_to_byte(57.3, 'K'))
|
||||||
self.assertEqual(131072, size_to_byte(1, 'MiB'))
|
self.assertEqual(1000000, size_to_byte(1, 'M'))
|
||||||
self.assertEqual(546570.24, size_to_byte(4.17, 'MiB'))
|
self.assertEqual(57300000, size_to_byte(57.3, 'M'))
|
||||||
self.assertEqual(134217728, size_to_byte(1, 'GiB'))
|
self.assertEqual(1000000000, size_to_byte(1, 'G'))
|
||||||
self.assertEqual(2691065446.4, size_to_byte(20.05, 'GiB'))
|
self.assertEqual(57300000000, size_to_byte(57.3, 'G'))
|
||||||
self.assertEqual(137438953472, size_to_byte(1, 'TiB'))
|
self.assertEqual(1000000000000, size_to_byte(1, 'T'))
|
||||||
self.assertEqual(6926923254988.8, size_to_byte(50.4, 'TiB'))
|
self.assertEqual(57300000000000, size_to_byte(57.3, 'T'))
|
||||||
self.assertEqual(140737488355328, size_to_byte(1, 'PiB'))
|
self.assertEqual(1000000000000000, size_to_byte(1, 'P'))
|
||||||
self.assertEqual(330733097635020.8, size_to_byte(2.35, 'PiB'))
|
self.assertEqual(5670000000000000, size_to_byte(5.67, 'P'))
|
||||||
|
|
||||||
|
def test_must_return_right_number_of_bytes_for_bibyte_units(self):
|
||||||
|
self.assertEqual(1024.0, size_to_byte(1, 'KiB'))
|
||||||
|
self.assertEqual(1579683.84, size_to_byte(1542.66, 'KiB'))
|
||||||
|
self.assertEqual(1048576, size_to_byte(1, 'MiB'))
|
||||||
|
self.assertEqual(4372561.92, size_to_byte(4.17, 'MiB'))
|
||||||
|
self.assertEqual(1073741824, size_to_byte(1, 'GiB'))
|
||||||
|
self.assertEqual(2168958484.48, size_to_byte(2.02, 'GiB'))
|
||||||
|
self.assertEqual(1099511627776, size_to_byte(1, 'TiB'))
|
||||||
|
self.assertEqual(3375500697272.32, size_to_byte(3.07, 'TiB'))
|
||||||
|
self.assertEqual(1125899906842624, size_to_byte(1, 'PiB'))
|
||||||
|
self.assertEqual(1294784892869017.5, size_to_byte(1.15, 'PiB'))
|
||||||
|
|
||||||
def test_must_return_converted_string_sizes(self):
|
def test_must_return_converted_string_sizes(self):
|
||||||
self.assertEqual(1024, size_to_byte('1', 'K'))
|
self.assertEqual(1000, size_to_byte('1', 'K'))
|
||||||
self.assertEqual(58675.2, size_to_byte('57.3', 'K'))
|
self.assertEqual(57300, size_to_byte('57.3', 'K'))
|
||||||
self.assertEqual(60083404.8, size_to_byte('57.3', 'M'))
|
self.assertEqual(57300000, size_to_byte('57.3', 'M'))
|
||||||
self.assertEqual(61525406515.2, size_to_byte('57.3', 'G'))
|
self.assertEqual(57300000000, size_to_byte('57.3', 'G'))
|
||||||
self.assertEqual(63002016271564.8, size_to_byte('57.3', 'T'))
|
self.assertEqual(57300000000000, size_to_byte('57.3', 'T'))
|
||||||
self.assertEqual(6383852471797678, size_to_byte('5.67', 'P'))
|
self.assertEqual(5670000000000000, size_to_byte('5.67', 'P'))
|
||||||
|
|
||||||
def test_must_treat_string_sizes_before_converting(self):
|
def test_must_treat_string_sizes_before_converting(self):
|
||||||
self.assertEqual(58675.2, size_to_byte(' 57 , 3 ', ' K '))
|
self.assertEqual(57300, size_to_byte(' 57 , 3 ', ' K '))
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ Description: GNU C compiler
|
|||||||
'section': 'web',
|
'section': 'web',
|
||||||
'maintainer': 'Distro Dev <root@distro.com>',
|
'maintainer': 'Distro Dev <root@distro.com>',
|
||||||
'architecture': 'amd64',
|
'architecture': 'amd64',
|
||||||
'uncompressed size': 247463936.0,
|
'uncompressed size': 236000000,
|
||||||
'predepends': ('distro-system-adjustments (>= 2021.12.16)', ),
|
'predepends': ('distro-system-adjustments (>= 2021.12.16)', ),
|
||||||
'breaks': ('firefox-dbg (< 95.0.1+distro1+una)', 'firefox-dev (< 95.0.1+distro1+una)',
|
'breaks': ('firefox-dbg (< 95.0.1+distro1+una)', 'firefox-dev (< 95.0.1+distro1+una)',
|
||||||
'firefox-geckodriver (< 95.0.1+distro1+una)', 'firefox-mozsymbols (< 95.0.1+distro1+una)'),
|
'firefox-geckodriver (< 95.0.1+distro1+una)', 'firefox-mozsymbols (< 95.0.1+distro1+una)'),
|
||||||
@@ -126,7 +126,7 @@ Description: GNU C compiler
|
|||||||
'section': 'devel',
|
'section': 'devel',
|
||||||
'maintainer': 'Distro Developers <distro-devel-discuss@lists.distro.com>',
|
'maintainer': 'Distro Developers <distro-devel-discuss@lists.distro.com>',
|
||||||
'architecture': 'amd64',
|
'architecture': 'amd64',
|
||||||
'uncompressed size': 52428.8,
|
'uncompressed size': 51200,
|
||||||
'depends': ('cpp (= 4:9.3.0-1distro2)', 'gcc-9 (>= 9.3.0-3~)'),
|
'depends': ('cpp (= 4:9.3.0-1distro2)', 'gcc-9 (>= 9.3.0-3~)'),
|
||||||
'recommends': ('libc6-dev | libc-dev', ),
|
'recommends': ('libc6-dev | libc-dev', ),
|
||||||
'suggests': ('gcc-multilib', 'make', 'manpages-dev', 'autoconf', 'automake',
|
'suggests': ('gcc-multilib', 'make', 'manpages-dev', 'autoconf', 'automake',
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ class FlatpakTest(TestCase):
|
|||||||
SimpleProcess.assert_called_once()
|
SimpleProcess.assert_called_once()
|
||||||
handle_simple.assert_called_once()
|
handle_simple.assert_called_once()
|
||||||
|
|
||||||
self.assertEqual({'org.xpto.Xnote': 4508876.8}, download_size)
|
self.assertEqual({'org.xpto.Xnote': 4300000}, download_size)
|
||||||
|
|||||||
Reference in New Issue
Block a user