From d68bf1e53da64986e8ac71bb48768e705f8c7b4f Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Tue, 9 Nov 2021 12:28:41 -0300 Subject: [PATCH] [flatpak] fix: not displaying the updates size for Flatpak 1.2 --- CHANGELOG.md | 1 + bauh/gems/flatpak/flatpak.py | 16 +++++++++++----- tests/gems/flatpak/test_flatpak.py | 21 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 tests/gems/flatpak/test_flatpak.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 072aa32b..bd1777bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixes - Flatpak - not displaying update components not associated with installed packages + - not displaying the updates size for Flatpak 1.2 - UI - upgrade summary: not displaying the icon type for some applications diff --git a/bauh/gems/flatpak/flatpak.py b/bauh/gems/flatpak/flatpak.py index 37f3eb2f..8586af4c 100755 --- a/bauh/gems/flatpak/flatpak.py +++ b/bauh/gems/flatpak/flatpak.py @@ -399,10 +399,10 @@ def run(app_id: str): def map_update_download_size(app_ids: Iterable[str], installation: str, version: Version) -> Dict[str, int]: success, output = ProcessHandler().handle_simple(SimpleProcess(['flatpak', 'update', '--{}'.format(installation)])) - if version >= VERSION_1_5: + if version >= VERSION_1_2: res = {} p = re.compile(r'^\d+.\t') - p2 = re.compile(r'\s([0-9.?a-zA-Z]+)\s?') + p2 = re.compile(r'([0-9.?a-zA-Z]+\s?)') for l in output.split('\n'): if l: line = l.strip() @@ -420,11 +420,17 @@ def map_update_download_size(app_ids: Iterable[str], installation: str, version: size_tuple = p2.findall(line_split[6]) if size_tuple: - size = size_tuple[0].split('?') + if version >= VERSION_1_5: + size = size_tuple[0].split('?') - if size and len(size) > 1: + if size and len(size) > 1: + try: + res[related_id[0].strip()] = size_to_byte(float(size[0]), size[1].strip()) + except: + traceback.print_exc() + else: try: - res[related_id[0].strip()] = size_to_byte(float(size[0]), size[1]) + res[related_id[0].strip()] = size_to_byte(float(size_tuple[0]), size_tuple[1].strip()) except: traceback.print_exc() return res diff --git a/tests/gems/flatpak/test_flatpak.py b/tests/gems/flatpak/test_flatpak.py new file mode 100644 index 00000000..7e10df91 --- /dev/null +++ b/tests/gems/flatpak/test_flatpak.py @@ -0,0 +1,21 @@ +from unittest import TestCase +from unittest.mock import patch, Mock + +from bauh import __app_name__ +from bauh.gems.flatpak import flatpak, VERSION_1_2 + + +class FlatpakTest(TestCase): + + @patch(f'{__app_name__}.gems.flatpak.flatpak.ProcessHandler.handle_simple', return_value=(True, """ + Looking for updates... + + \tID\tArch\tBranch\tRemote\tDownload + 1.\t \torg.xpto.Xnote\tx86_64\tstable\tflathub\t< 4.3 MB + + """)) + def test_map_update_download_size__for_flatpak_1_2(self, handle_simple: Mock): + download_size = flatpak.map_update_download_size(app_ids={'org.xpto.Xnote'}, installation='user', version=VERSION_1_2) + handle_simple.assert_called_once() + + self.assertEqual({'org.xpto.Xnote': 4300000}, download_size)