From: Ansgar Burchardt Date: Sun, 8 Jul 2012 21:50:11 +0000 (-0600) Subject: daklib/checks.py: use apt_pkg.version_compare correctly X-Git-Url: https://git.decadent.org.uk/gitweb/?p=dak.git;a=commitdiff_plain;h=c11a2e9c7b7ea1d6e97a9090c0de91405f8faeb4 daklib/checks.py: use apt_pkg.version_compare correctly version_compare returns values less than, equal to or greater than zero. This value is not always -1, 0 or 2(!) as the documentation claims. Reference: http://bugs.debian.org/680891 --- diff --git a/daklib/checks.py b/daklib/checks.py index 5c93ec3f..b8143b2b 100644 --- a/daklib/checks.py +++ b/daklib/checks.py @@ -507,14 +507,14 @@ class VersionCheck(Check): else: return db_binary.version - def _version_checks(self, upload, suite, expected_result): + def _version_checks(self, upload, suite, op): session = upload.session if upload.changes.source is not None: source_name = upload.changes.source.dsc['Source'] source_version = upload.changes.source.dsc['Version'] v = self._highest_source_version(session, source_name, suite) - if v is not None and version_compare(source_version, v) != expected_result: + if v is not None and not op(version_compare(source_version, v)): raise Reject('Version check failed (source={0}, version={1}, other-version={2}, suite={3})'.format(source_name, source_version, v, suite.suite_name)) for binary in upload.changes.binaries: @@ -522,7 +522,7 @@ class VersionCheck(Check): binary_version = binary.control['Version'] architecture = binary.control['Architecture'] v = self._highest_binary_version(session, binary_name, suite, architecture) - if v is not None and version_compare(binary_version, v) != expected_result: + if v is not None and not op(version_compare(binary_version, v)): raise Reject('Version check failed (binary={0}, version={1}, other-version={2}, suite={3})'.format(binary_name, binary_version, v, suite.suite_name)) def per_suite_check(self, upload, suite): @@ -535,13 +535,13 @@ class VersionCheck(Check): must_be_newer_than.append(suite) for s in must_be_newer_than: - self._version_checks(upload, s, 1) + self._version_checks(upload, s, lambda result: result > 0) vc_older = session.query(dbconn.VersionCheck).filter_by(suite=suite, check='MustBeOlderThan') must_be_older_than = [ vc.reference for vc in vc_older ] for s in must_be_older_than: - self._version_checks(upload, s, -1) + self._version_checks(upload, s, lambda result: result < 0) return True