From 1de85e2fa497eacbd464234dcc3268553d8f954f Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Thu, 10 Oct 2019 17:48:28 -0300 Subject: [PATCH] [fix][aur] update check --- bauh/gems/arch/mapper.py | 29 +++++++++++++++++++++++- tests/gems/arch/arch_data_mapper_test.py | 5 ++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/bauh/gems/arch/mapper.py b/bauh/gems/arch/mapper.py index 72db9469..867dd1bb 100644 --- a/bauh/gems/arch/mapper.py +++ b/bauh/gems/arch/mapper.py @@ -7,6 +7,7 @@ from bauh.gems.arch.model import ArchPackage URL_PKG_DOWNLOAD = 'https://aur.archlinux.org/{}' RE_LETTERS = re.compile(r'\.([a-zA-Z]+)-\d+$') +RE_ANY_LETTER = re.compile(r'[a-zA-Z]') RE_SFX = ('r', 're', 'release') GA_SFX = ('ga', 'ge') @@ -74,7 +75,33 @@ class ArchDataMapper: return nlatest > nversion - return latest_version > version + if not RE_ANY_LETTER.findall(latest_version) and not RE_ANY_LETTER.findall(version): + latest_no_rel = latest_version.split('-') + version_no_rel = version.split('-') + + latest_split = latest_no_rel[0].split('.') + version_split = version_no_rel[0].split('.') + + for idx in range(len(latest_split)): + if idx < len(version_split): + dif = int(latest_split[idx]) - int(version_split[idx]) + + if dif > 0: + return True + elif dif < 0: + return False + else: + continue + + if len(latest_no_rel) > 1 and len(version_no_rel) > 1: + if not RE_ANY_LETTER.findall(latest_no_rel[1]) and not RE_ANY_LETTER.findall(version_no_rel[1]): + return int(latest_no_rel[1]) > int(version_no_rel[1]) + else: + return latest_no_rel[1] > version_no_rel[1] + + return False + else: + return latest_version > version return False diff --git a/tests/gems/arch/arch_data_mapper_test.py b/tests/gems/arch/arch_data_mapper_test.py index a5c0f683..10db29c5 100644 --- a/tests/gems/arch/arch_data_mapper_test.py +++ b/tests/gems/arch/arch_data_mapper_test.py @@ -17,6 +17,11 @@ class ArchDataMapperTest(TestCase): self.assertTrue(ArchDataMapper.check_update('1.5.1-1', '1.5.1-2')) self.assertTrue(ArchDataMapper.check_update('1.5.1-1', '2.0.0-1')) self.assertFalse(ArchDataMapper.check_update('2.0.0-1', '1.5.1-1')) + self.assertTrue(ArchDataMapper.check_update('77.0.3865.90-1', '77.0.3865.120-1')) + self.assertTrue(ArchDataMapper.check_update('77.0.3865.90-1', '77.0.3865.90-2')) + self.assertFalse(ArchDataMapper.check_update('77.0.3865.900-1', '77.0.3865.120-1')) + self.assertTrue(ArchDataMapper.check_update('77.0.3865.120-1', '77.0.3865.900-1')) + self.assertFalse(ArchDataMapper.check_update('77.0.3865.120-1', '77.0.3865.90-1')) def test_check_update_no_suffix_3_x_2_digits(self): self.assertTrue(ArchDataMapper.check_update('1.0.0-1', '1.1-1'))