[svn-commits] russell: testsuite/asterisk/trunk r94 - /asterisk/trunk/asteriskversion.py

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Mar 17 21:34:25 CDT 2010


Author: russell
Date: Wed Mar 17 21:34:21 2010
New Revision: 94

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=94
Log:
Add comparisons of SVN version strings

Modified:
    asterisk/trunk/asteriskversion.py

Modified: asterisk/trunk/asteriskversion.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/asteriskversion.py?view=diff&rev=94&r1=93&r2=94
==============================================================================
--- asterisk/trunk/asteriskversion.py (original)
+++ asterisk/trunk/asteriskversion.py Wed Mar 17 21:34:21 2010
@@ -30,34 +30,29 @@
     def __str__(self):
         return self.version_str
 
+    def __int__(self):
+        if self.svn is True:
+            if self.branch == "trunk":
+                return 99999999
+            elif self.branch[:6] == "branch":
+                return int(AsteriskVersion(self.branch[7:])) + 99
+            else:
+                # team branch XXX (may not be off of trunk)
+                return 99999999
+        else:
+            res = int(self.concept) * 10000000 + int(self.major) * 100000
+            if self.minor is not None:
+                res += int(self.minor) * 1000
+                if self.patch is not None:
+                    res += int(self.patch) * 10
+            return res
+
     def __cmp__(self, other):
-        if self.svn or other.svn:
-            print "ERROR: SVN version comparisons not yet implemented."
-            return 0
-        else:
-            res = self.__cmp_version_part(self.concept, other.concept)
-            if res != 0:
-                return res
-
-            res = self.__cmp_version_part(self.major, other.major)
-            if res != 0:
-                return res
-
-            res = self.__cmp_version_part(self.minor, other.minor)
-            if res != 0:
-                return res
-
-            return self.__cmp_version_part(self.patch, other.patch)
-
-    @staticmethod
-    def __cmp_version_part(selfpart, otherpart):
-        if selfpart is None and otherpart is None:
-            return 0
-        if selfpart is None:
-            return -1
-        if otherpart is None:
-            return 1
-        return cmp(selfpart, otherpart)
+        res = cmp(int(self), int(other))
+        if res == 0 and self.svn and other.svn:
+            res = cmp(int(self.revision.split("M")[0]),
+                      int(other.revision.split("M")[0]))
+        return res
 
     def __parse_version(self):
         self.svn = False
@@ -191,6 +186,26 @@
         v2 = AsteriskVersion("2.0")
         self.assertTrue(v1 < v2)
 
+    def test_cmp8(self):
+        v1 = AsteriskVersion("SVN-trunk-r252849")
+        v2 = AsteriskVersion("SVN-branch-1.6.2-r245581M")
+        self.assertTrue(v1 > v2)
+
+    def test_cmp9(self):
+        v1 = AsteriskVersion("SVN-trunk-r252849")
+        v2 = AsteriskVersion("SVN-trunk-r252850M")
+        self.assertTrue(v1 < v2)
+
+    def test_cmp10(self):
+        v1 = AsteriskVersion("SVN-trunk-r252849")
+        v2 = AsteriskVersion("SVN-russell-cdr-q-r249059M-/trunk")
+        self.assertTrue(v1 > v2)
+
+    def test_cmp11(self):
+        v1 = AsteriskVersion("SVN-branch-1.6.2-r245581M")
+        v2 = AsteriskVersion("SVN-branch-1.6.1-r245581M")
+        self.assertTrue(v1 > v2)
+
 
 def main():
     unittest.main()




More information about the svn-commits mailing list