summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-01-11 08:19:55 +0000
committerZac Medico <zmedico@gentoo.org>2008-01-11 08:19:55 +0000
commit6d98d4788348f34711420a8abcb62bb26d161871 (patch)
treeba1771c2a4a787fe4d5adfc8d6822c3d3be7a31e
parent573ce721bd4ed67b979b56fdd996aa21fdb8faf2 (diff)
downloadportage-6d98d4788348f34711420a8abcb62bb26d161871.tar.gz
portage-6d98d4788348f34711420a8abcb62bb26d161871.tar.bz2
portage-6d98d4788348f34711420a8abcb62bb26d161871.zip
* Make pkgcmp() pass the ebuild revision directly into vercmp() since
there is code there to handle it already. This eliminates some redundant revision comparison code. Thanks to peper for the patch. * Add some vercmp() test cases for comparison of ebuild revisions. svn path=/main/trunk/; revision=9178
-rw-r--r--pym/portage/tests/versions/test_vercmp.py21
-rw-r--r--pym/portage/versions.py8
2 files changed, 18 insertions, 11 deletions
diff --git a/pym/portage/tests/versions/test_vercmp.py b/pym/portage/tests/versions/test_vercmp.py
index c25ed954b..d8837b852 100644
--- a/pym/portage/tests/versions/test_vercmp.py
+++ b/pym/portage/tests/versions/test_vercmp.py
@@ -12,7 +12,9 @@ class VerCmpTestCase(TestCase):
def testVerCmpGreater(self):
- tests = [ ( "6.0", "5.0"), ("5.0","5")]
+ tests = [ ( "6.0", "5.0"), ("5.0","5"),
+ ("1.0-r1", "1.0-r0"),
+ ("1.0-r1", "1.0")]
for test in tests:
self.failIf( vercmp( test[0], test[1] ) <= 0, msg="%s < %s? Wrong!" % (test[0],test[1]) )
@@ -24,20 +26,31 @@ class VerCmpTestCase(TestCase):
("1.0_alpha2", "1.0_p2"),("1.0_alpha1", "1.0_beta1"),("1.0_beta3","1.0_rc3"),
("1.001000000000000000001", "1.001000000000000000002"),
("1.00100000000", "1.0010000000000000001"),
- ("1.01", "1.1")]
+ ("1.01", "1.1"),
+ ("1.0-r0", "1.0-r1"),
+ ("1.0", "1.0-r1")]
for test in tests:
self.failIf( vercmp( test[0], test[1]) >= 0, msg="%s > %s? Wrong!" % (test[0],test[1]))
def testVerCmpEqual(self):
- tests = [ ("4.0", "4.0") ]
+ tests = [ ("4.0", "4.0"),
+ ("1.0", "1.0"),
+ ("1.0-r0", "1.0"),
+ ("1.0", "1.0-r0"),
+ ("1.0-r0", "1.0-r0"),
+ ("1.0-r1", "1.0-r1")]
for test in tests:
self.failIf( vercmp( test[0], test[1]) != 0, msg="%s != %s? Wrong!" % (test[0],test[1]))
def testVerNotEqual(self):
tests = [ ("1","2"),("1.0_alpha","1.0_pre"),("1.0_beta","1.0_alpha"),
- ("0", "0.0")]
+ ("0", "0.0"),
+ ("1.0-r0", "1.0-r1"),
+ ("1.0-r1", "1.0-r0"),
+ ("1.0", "1.0-r1"),
+ ("1.0-r1", "1.0")]
for test in tests:
self.failIf( vercmp( test[0], test[1]) == 0, msg="%s == %s? Wrong!" % (test[0],test[1]))
diff --git a/pym/portage/versions.py b/pym/portage/versions.py
index d4699d1ab..115064578 100644
--- a/pym/portage/versions.py
+++ b/pym/portage/versions.py
@@ -189,17 +189,11 @@ def pkgcmp(pkg1, pkg2):
"""
if pkg1[0] != pkg2[0]:
return None
- mycmp=vercmp(pkg1[1],pkg2[1])
+ mycmp = vercmp("-".join(pkg1[1:]), "-".join(pkg2[1:]))
if mycmp>0:
return 1
if mycmp<0:
return -1
- r1=float(pkg1[2][1:])
- r2=float(pkg2[2][1:])
- if r1>r2:
- return 1
- if r2>r1:
- return -1
return 0