[rpm] Handle the tilde separator in versioning
We need correctly handle the tidle separator in RPM versioning [1]: eg: rpmdev-vercmp 1:8.0.0~b3 1:8.0.0 1:8.0.0~b3 < 1:8.0.0 1:8.0.1~b3 > 1:8.0.0 1:8.0.0~b3 < 1:8.0.1~c1 1:8.0.0~b3 > 1:8.0.0~a1 [1]. http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ Change-Id: I4a3c867a603a595515e76ee6f4415177a407a0b8 Closes-bug: #1586981
This commit is contained in:
parent
ff85847eca
commit
2bd9a9415d
|
@ -110,6 +110,15 @@ class PackageVersion(ComparableObject):
|
|||
a = la.pop(0)
|
||||
if lb:
|
||||
b = lb.pop(0)
|
||||
# handle the tilde separator, which is ~ = (int) 382
|
||||
# _order("~") == 382
|
||||
# if both versions have tilde then let's continue
|
||||
if a == b == 382:
|
||||
continue
|
||||
if a == 382:
|
||||
return -1
|
||||
if b == 382:
|
||||
return 1
|
||||
if a < b:
|
||||
return -1
|
||||
elif a > b:
|
||||
|
|
|
@ -239,6 +239,9 @@ class TestPackageVersion(base.TestCase):
|
|||
ver2 = PackageVersion.from_string("13.9-16.12")
|
||||
ver3 = PackageVersion.from_string("13.9")
|
||||
ver4 = PackageVersion.from_string("1:13.9")
|
||||
ver5 = PackageVersion.from_string("1:8.0.0~b3")
|
||||
ver6 = PackageVersion.from_string("1:8.0.0")
|
||||
ver7 = PackageVersion.from_string("1:8.0.0~a1")
|
||||
self.assertLess(ver1, ver2)
|
||||
self.assertGreater(ver2, ver1)
|
||||
self.assertEqual(ver1, ver1)
|
||||
|
@ -247,3 +250,9 @@ class TestPackageVersion(base.TestCase):
|
|||
self.assertEqual(ver2, ver3)
|
||||
self.assertGreater(ver4, ver3)
|
||||
self.assertGreater(ver4, ver2)
|
||||
# test tilda in versioning
|
||||
# rpmdev-vercmp 1:8.0.0~b3 1:8.0.0
|
||||
# 1:8.0.0~b3 < 1:8.0.0
|
||||
# 1:8.0.0~b3 > 1:8.0.0~a1
|
||||
self.assertGreater(ver6, ver5)
|
||||
self.assertGreater(ver5, ver7)
|
||||
|
|
Loading…
Reference in New Issue