mirror of
https://github.com/lutris/lutris
synced 2024-09-15 22:09:55 +00:00
Add version_sort utility function
This commit is contained in:
parent
ac3f07bafe
commit
1030d16862
|
@ -31,3 +31,18 @@ def lookup_string_in_text(string, text):
|
|||
for line in output_lines:
|
||||
if string in line:
|
||||
return line
|
||||
|
||||
|
||||
def version_sort(versions, reverse=False):
|
||||
def version_key(version):
|
||||
version_match = re.search(r'(\d[\d\.]+\d)', version)
|
||||
if not version_match:
|
||||
return
|
||||
version_number = version_match.groups()[0]
|
||||
prefix = version[0:version_match.span()[0]]
|
||||
suffix = version[version_match.span()[1]:]
|
||||
version = [int(p) for p in version_number.split('.')]
|
||||
version.append(prefix)
|
||||
version.append(suffix)
|
||||
return version
|
||||
return sorted(versions, key=version_key, reverse=reverse)
|
||||
|
|
|
@ -76,3 +76,37 @@ class TestStringUtils(TestCase):
|
|||
'bar <a href="http://strycore.com">http://strycore.com</a>'
|
||||
)
|
||||
self.assertEqual(strings.add_url_tags(text), expected)
|
||||
|
||||
|
||||
class TestVersionSort(TestCase):
|
||||
def test_versions_are_correctly_sorted(self):
|
||||
versions = ['1.8', '1.7.4', '1.9.1', '1.9.10', '1.9.4']
|
||||
versions = strings.version_sort(versions)
|
||||
self.assertEqual(versions[0], '1.7.4')
|
||||
self.assertEqual(versions[1], '1.8')
|
||||
self.assertEqual(versions[2], '1.9.1')
|
||||
self.assertEqual(versions[3], '1.9.4')
|
||||
self.assertEqual(versions[4], '1.9.10')
|
||||
|
||||
def test_version_sorting_supports_extra_strings(self):
|
||||
versions = [
|
||||
'1.8', '1.8-staging',
|
||||
'1.7.4', '1.9.1',
|
||||
'1.9.10-staging', '1.9.10',
|
||||
'1.9.4', 'staging-1.9.4'
|
||||
]
|
||||
versions = strings.version_sort(versions)
|
||||
self.assertEqual(versions[0], '1.7.4')
|
||||
self.assertEqual(versions[1], '1.8')
|
||||
self.assertEqual(versions[2], '1.8-staging')
|
||||
self.assertEqual(versions[3], '1.9.1')
|
||||
self.assertEqual(versions[4], '1.9.4')
|
||||
self.assertEqual(versions[5], 'staging-1.9.4')
|
||||
self.assertEqual(versions[6], '1.9.10')
|
||||
self.assertEqual(versions[7], '1.9.10-staging')
|
||||
|
||||
def test_versions_can_be_reversed(self):
|
||||
versions = ['1.9', '1.6', '1.7', '1.8']
|
||||
versions = strings.version_sort(versions, reverse=True)
|
||||
self.assertEqual(versions[0], '1.9')
|
||||
self.assertEqual(versions[3], '1.6')
|
||||
|
|
Loading…
Reference in a new issue