X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fdbtest_packages.py;h=fabb4152ff1672680e0e4d6a399cf70d5fa3cc1c;hb=9701189232ab74d2057abe9e59afab71530d7820;hp=9ac4ef4ccec6f4cf5f854ed8996398d2dbb25eea;hpb=99aed3cc2eb9db877c71b9a6e039cc38241e45f5;p=dak.git diff --git a/tests/dbtest_packages.py b/tests/dbtest_packages.py index 9ac4ef4c..fabb4152 100755 --- a/tests/dbtest_packages.py +++ b/tests/dbtest_packages.py @@ -5,11 +5,26 @@ from db_test import DBDakTestCase 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 + 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 +class Pkg(): + 'fake package class used for testing' + + def __init__(self): + self.dsc = {} + self.files = {} + self.changes = {} + +class Upload(): + 'fake Upload class used for testing' + + def __init__(self, pkg): + self.pkg = pkg + class PackageTestCase(DBDakTestCase): """ PackageTestCase checks the handling of source and binary packages in dak's @@ -274,6 +289,85 @@ class PackageTestCase(DBDakTestCase): self.assertTrue(self.suite['squeeze'] in \ get_suites_source_in('sl', self.session)) + def test_upload(self): + 'tests function add_dsc_to_db()' + + self.setup_maintainers() + self.setup_locations() + self.setup_poolfiles() + pkg = Pkg() + pkg.dsc['source'] = 'hello' + pkg.dsc['version'] = '2.2-2' + pkg.dsc['maintainer'] = self.maintainer['maintainer'].name + pkg.changes['changed-by'] = self.maintainer['uploader'].name + pkg.changes['fingerprint'] = 'deadbeef' + pkg.changes['distribution'] = { 'sid': '' } + self.session.flush() + self.session.refresh(self.file['hello']) + pkg.files['hello_2.2-2.dsc'] = { \ + 'component': 'main', + 'location id': self.loc['main'].component_id, + 'files id': self.file['hello'].file_id } + pkg.dsc_files = {} + upload = Upload(pkg) + (source, dsc_component, dsc_location_id, pfs) = \ + add_dsc_to_db(upload, 'hello_2.2-2.dsc', self.session) + self.session.refresh(source) + self.assertEqual('hello', source.source) + self.assertEqual('2.2-2', source.version) + self.assertEqual('sid', source.suites[0].suite_name) + self.assertEqual('main', dsc_component) + # no dsc files defined above + self.assertEqual(None, dsc_location_id) + self.assertEqual([], pfs) + + def test_source_exists(self): + 'test function source_exists()' + + self.setup_sources() + self.session.flush() + hello = self.source['hello'] + self.assertTrue(source_exists(hello.source, hello.version, \ + suites = ['sid'], session = self.session)) + # binNMU + self.assertTrue(source_exists(hello.source, hello.version + '+b7', \ + suites = ['sid'], session = self.session)) + self.assertTrue(not source_exists(hello.source, hello.version, \ + suites = ['lenny', 'squeeze'], session = self.session)) + self.assertTrue(not source_exists(hello.source, hello.version, \ + suites = ['lenny', 'sid'], session = self.session)) + self.assertTrue(not source_exists(hello.source, hello.version, \ + suites = ['sid', 'lenny'], session = self.session)) + self.assertTrue(not source_exists(hello.source, '0815', \ + suites = ['sid'], session = self.session)) + # 'any' suite + 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()