From d22308ba7e7bc0a9ca1b641b849e4d7f19ce757c Mon Sep 17 00:00:00 2001 From: JeanLeo Date: Thu, 12 Nov 2020 22:18:35 +0800 Subject: [PATCH] fix https://gitee.com/openeuler/openEuler-Advisor/issues/I24ZV2?from=project-issue --- advisors/version_recommend.py | 24 +++++++++++++++++++----- tests/test_version_recommend.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/advisors/version_recommend.py b/advisors/version_recommend.py index c88ed857..acff7292 100755 --- a/advisors/version_recommend.py +++ b/advisors/version_recommend.py @@ -177,9 +177,11 @@ class VersionType(object): """ Get the latest version. """ + if not version_list: + return '' + index = start version_candidate = version_list[:] - while True: version_entry = version_candidate[:] version_candidate.clear() @@ -195,9 +197,13 @@ class VersionType(object): for version in version_entry: if len(version) <= index: continue + if _y == version[index]: version_candidate.append(version) + if not version_candidate: + return version_entry[0] + if len(version_candidate) == 1: return version_candidate[0] @@ -255,7 +261,9 @@ class VersionTypeXYZW(VersionType): version_candidate.append(version_temp) # 将同特性版本的子版本挑选出来 version = self.get_latest_version(version_candidate, 3) - return self._separator.join(version) + if version: + return self._separator.join(version) + return current_version def __init__(self): """ @@ -313,7 +321,9 @@ class VersionTypeXYZ(VersionType): version_candidate.append(version_temp) # 将同特性版本的子版本挑选出来 version = self.get_latest_version(version_candidate, 2) - return self._separator.join(version) + if version: + return self._separator.join(version) + return current_version def __init__(self): """ @@ -370,7 +380,9 @@ class VersionTypeXY(VersionType): version_candidate.append(version_temp) # 将同特性版本的子版本挑选出来 version = self.get_latest_version(version_candidate, 1) - return self._separator.join(version) + if version: + return self._separator.join(version) + return current_version class VersionTypeX(VersionType): @@ -411,7 +423,9 @@ class VersionTypeX(VersionType): version_candidate.append(version_temp) # 将同特性版本的子版本挑选出来 version = self.get_latest_version(version_candidate, 1) - return self._separator.join(version) + if version: + return self._separator.join(version) + return current_version def __init__(self): """ diff --git a/tests/test_version_recommend.py b/tests/test_version_recommend.py index d89390a8..b42e2b63 100755 --- a/tests/test_version_recommend.py +++ b/tests/test_version_recommend.py @@ -186,3 +186,33 @@ def test_version_type_pkgconf(): assert version_type.latest_version == '1.7.3' assert version_type.maintain_version == '1.7.3' + +def test_version_type_mksh(): + """ + Test mksh + """ + tags = ['19', '20', '21', '22', '23', '24', '24b', '24c', '25', '26', '26b', '26c', + '27', '27d', '27e', '28', '29', '29b', '29c', '29d', '29e', '29f', '29g', + '30', '31', '31b', '31c', '31d', '32', '33', '33b', '33c', '33d', '35', '35b', + '36', '36b', '37', '37b', '37c', '38', '38b', '38c', '39', '39b', '39c', + '40', '40b', '40c', '40d', '40e', '40f', '41', '41b', '41c', '42', '42b', + '43', '44', '45', '46', '47', '48', '48b', '49', '50', '50b', '50c', + '50d', '50e', '50f', '51', '52', '52b', '52c', '53', '53a', '54', '55', + '56', '56b', '56c', '57', '58', '59', '59b', '59c'] + + current_version = "56c" + version_type = version_recommend.VersionRecommend(tags, current_version, 0) + assert version_type.latest_version == '59' + assert version_type.maintain_version == '56c' + + +def test_version_type_pyxattr(): + """ + Test pyxattr + """ + tags = ['0.1', '0.2.1', '0.2.2', '0.3.0', '0.4.0', '0.5.0', '0.7.0', '0.7.1'] + + current_version = "0.6.1" + version_type = version_recommend.VersionRecommend(tags, current_version, 0) + assert version_type.latest_version == '0.7.1' + assert version_type.maintain_version == '0.6.1' -- Gitee