From: Torsten Werner Date: Sat, 22 Jan 2011 19:47:57 +0000 (+0100) Subject: Test and improve package_to_suite(). X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=9701189232ab74d2057abe9e59afab71530d7820;p=dak.git Test and improve package_to_suite(). Signed-off-by: Torsten Werner --- diff --git a/daklib/queue_install.py b/daklib/queue_install.py index aa58a64b..b1c2f55e 100755 --- a/daklib/queue_install.py +++ b/daklib/queue_install.py @@ -35,24 +35,24 @@ from daklib.config import Config ################################################################################ def package_to_suite(u, suite_name, session): - if not u.pkg.changes["distribution"].has_key(suite_name): + if suite_name not in u.pkg.changes["distribution"]: return False - ret = True + if 'source' in u.pkg.changes["architecture"]: + return True - if not u.pkg.changes["architecture"].has_key("source"): - q = session.query(SrcAssociation.sa_id) - q = q.join(Suite).filter_by(suite_name=suite_name) - q = q.join(DBSource).filter_by(source=u.pkg.changes['source']) - q = q.filter_by(version=u.pkg.changes['version']).limit(1) + q = session.query(Suite).filter_by(suite_name = suite_name). \ + filter(Suite.sources.any( \ + source = u.pkg.changes['source'], \ + version = u.pkg.changes['version'])) - # NB: Careful, this logic isn't what you would think it is - # Source is already in the target suite so no need to go to policy - # Instead, we don't move to the policy area, we just do an ACCEPT - if q.count() > 0: - ret = False - - return ret + # NB: Careful, this logic isn't what you would think it is + # Source is already in the target suite so no need to go to policy + # Instead, we don't move to the policy area, we just do an ACCEPT + if q.count() > 0: + return False + else: + return True def package_to_queue(u, summary, short_summary, queue, chg, session, announce=None): cnf = Config() diff --git a/tests/dbtest_packages.py b/tests/dbtest_packages.py index 8fd7ad19..fabb4152 100755 --- a/tests/dbtest_packages.py +++ b/tests/dbtest_packages.py @@ -6,6 +6,7 @@ from daklib.dbconn import Architecture, Suite, get_suite_architectures, \ get_architecture_suites, Maintainer, DBSource, Location, PoolFile, \ check_poolfile, get_poolfile_like_name, get_source_in_suite, \ get_suites_source_in, add_dsc_to_db, source_exists +from daklib.queue_install import package_to_suite from sqlalchemy.orm.exc import MultipleResultsFound import unittest @@ -343,6 +344,30 @@ class PackageTestCase(DBDakTestCase): self.assertTrue(source_exists(hello.source, hello.version, \ session = self.session)) + def test_package_to_suite(self): + 'test function package_to_suite()' + + self.setup_sources() + self.session.flush() + pkg = Pkg() + pkg.changes = { 'distribution': {} } + upload = Upload(pkg) + self.assertTrue(not package_to_suite(upload, 'sid', self.session)) + pkg.changes['distribution'] = { 'sid': '' } + pkg.changes['architecture'] = { 'source': '' } + self.assertTrue(package_to_suite(upload, 'sid', self.session)) + pkg.changes['architecture'] = {} + pkg.changes['source'] = self.source['hello'].source + pkg.changes['version'] = self.source['hello'].version + self.assertTrue(not package_to_suite(upload, 'sid', self.session)) + pkg.changes['version'] = '42' + self.assertTrue(package_to_suite(upload, 'sid', self.session)) + pkg.changes['source'] = 'foobar' + pkg.changes['version'] = self.source['hello'].version + self.assertTrue(package_to_suite(upload, 'sid', self.session)) + pkg.changes['distribution'] = { 'lenny': '' } + self.assertTrue(package_to_suite(upload, 'lenny', self.session)) + if __name__ == '__main__': unittest.main()