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') _______________________________________________ Secure-testing-commits mailing list Secure-testing-commits@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/secure-testing-commits