Mercurial > bitten > bitten-test
changeset 553:98151eb9f1a5
If a target platform is deleted, any pending builds for that platform should be removed `[silk]` - fixes #382
author | dfraser |
---|---|
date | Wed, 08 Apr 2009 05:14:04 +0000 |
parents | f20c079c17a7 |
children | 2c27f3581100 |
files | bitten/model.py bitten/tests/model.py |
diffstat | 2 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/model.py +++ b/bitten/model.py @@ -219,6 +219,9 @@ else: handle_ta = False + for build in Build.select(self.env, platform=self.id, status=Build.PENDING, db=db): + build.delete() + cursor = db.cursor() cursor.execute("DELETE FROM bitten_rule WHERE id=%s", (self.id,)) cursor.execute("DELETE FROM bitten_platform WHERE id=%s", (self.id,))
--- a/bitten/tests/model.py +++ b/bitten/tests/model.py @@ -773,6 +773,40 @@ self.assertEqual(1, idx) +class PlatformBuildTestCase(unittest.TestCase): + """Tests that involve Builds, TargetPlatforms and BuildSteps""" + + def setUp(self): + self.env = EnvironmentStub() + self.env.path = tempfile.mkdtemp() + logs_dir = self.env.config.get("bitten", "logs_dir") + if os.path.isabs(logs_dir): + raise ValueError("Should not have absolute logs directory for temporary test") + logs_dir = os.path.join(self.env.path, logs_dir) + os.makedirs(logs_dir) + + db = self.env.get_db_cnx() + cursor = db.cursor() + connector, _ = DatabaseManager(self.env)._get_connector() + for schema in [Build._schema, TargetPlatform._schema, BuildStep._schema]: + for table in schema: + for stmt in connector.to_sql(table): + cursor.execute(stmt) + db.commit() + + def test_delete_platform_with_pending_builds(self): + """Check that deleting a platform with pending builds removes those pending builds""" + db = self.env.get_db_cnx() + platform = TargetPlatform(self.env, config='test', name='Linux') + platform.insert() + build = Build(self.env, config='test', platform=platform.id, rev='42', rev_time=12039) + build.insert() + + platform.delete() + pending = list(build.select(self.env, config='test', status=Build.PENDING)) + self.assertEqual(0, len(pending)) + + def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(BuildConfigTestCase, 'test')) @@ -781,6 +815,7 @@ suite.addTest(unittest.makeSuite(BuildStepTestCase, 'test')) suite.addTest(unittest.makeSuite(BuildLogTestCase, 'test')) suite.addTest(unittest.makeSuite(ReportTestCase, 'test')) + suite.addTest(unittest.makeSuite(PlatformBuildTestCase, 'test')) return suite if __name__ == '__main__':