[Secure-testing-commits] r2045 - lib/python
Florian Weimer
fw at costa.debian.org
Mon Sep 19 15:12:38 UTC 2005
Author: fw
Date: 2005-09-19 15:12:37 +0000 (Mon, 19 Sep 2005)
New Revision: 2045
Modified:
lib/python/debian_support.py
Log:
Fix bug in the version comparison algorithm.
lib/python/debian_support.py (letterValue):
New global variable.
(Version.__parse_1):
Use it to sort letters before non-letters.
(test):
New test case.
Modified: lib/python/debian_support.py
===================================================================
--- lib/python/debian_support.py 2005-09-19 11:22:21 UTC (rev 2044)
+++ lib/python/debian_support.py 2005-09-19 15:12:37 UTC (rev 2045)
@@ -52,6 +52,21 @@
file.write("%s:%d: %s\n" % (self.filename, self.lineno, self.msg))
file.flush()
+letterValue = [None] * 256
+def initLetterValue():
+ c = 0
+ for x in range(ord('A'), ord('Z') + 1):
+ letterValue[x] = chr(c)
+ c += 1
+ for x in range(ord('a'), ord('z') + 1):
+ letterValue[x] = chr(c)
+ c += 1
+ for x in "+-.:":
+ letterValue[ord(x)] = chr(c)
+ c += 1
+initLetterValue()
+del initLetterValue
+
class Version:
"""This class implements Debian version numbers."""
@@ -93,6 +108,10 @@
while x is not None and x <> '':
(nd, x) = non_digits.match(x).groups()
(d, x) = digits.match(x).groups()
+ nd_l = []
+ for ch in nd:
+ nd_l.append(letterValue[ord(ch)])
+ nd = ''.join(nd_l)
if d == '':
d = 0
else:
@@ -414,6 +433,7 @@
assert Version('0.9.2-5') < Version('0.9.2+cvs.1.0.dev.2004.07.28-1.5')
assert Version('1:500') < Version('1:5000')
assert Version('100:500') > Version('11:5000')
+ assert Version('1.0.4-2') > Version('1.0pre7-2')
# Release
assert internRelease('sarge') < internRelease('etch')
More information about the Secure-testing-commits
mailing list