# HG changeset patch # User osimons # Date 1299554357 0 # Node ID ed77e3e1c43f80765e29c6efc0a591de6e9c0a6b # Parent 60d0807334ec923fa0ada042a3f500bc35059e70 BuildConfig may be `None` when checking to see if build should be deleted. Fix + test, closes #666. diff --git a/bitten/queue.py b/bitten/queue.py --- a/bitten/queue.py +++ b/bitten/queue.py @@ -305,6 +305,8 @@ def should_delete_build(self, build, repos): config = BuildConfig.fetch(self.env, build.config) + config_name = config and config.name \ + or 'unknown config "%s"' % build.config platform = TargetPlatform.fetch(self.env, build.platform) # Platform may or may not exist anymore - get safe name for logging @@ -319,10 +321,10 @@ return True # Ignore pending builds for deactived build configs - if not config.active: + if not (config and config.active): self.log.info('Dropping build of configuration "%s" at ' 'revision [%s] on %s because the configuration is ' - 'deactivated', config.name, build.rev, platform_name) + 'deactivated', config_name, build.rev, platform_name) return True # Stay within the revision limits of the build config diff --git a/bitten/tests/queue.py b/bitten/tests/queue.py --- a/bitten/tests/queue.py +++ b/bitten/tests/queue.py @@ -352,6 +352,21 @@ self.assertEqual(True, queue.should_delete_build(build, self.repos)) self.assert_("configuration is deactivated" in messages[0]) + def test_should_delete_build_config_none(self): + out = [] + self.env.log = Mock( + info=lambda msg, *args: out.extend([msg] + list(args))) + platform = TargetPlatform(self.env, config='test', name='stuff') + platform.insert() + build = Build(self.env, config='does_not_exist', rev=42, + platform=platform.id, rev_time=123456) + build.insert() + queue = BuildQueue(self.env, build_all=True) + + self.assertEqual(True, queue.should_delete_build(build, self.repos)) + self.assertTrue("configuration is deactivated" in out[0]) + self.assertEquals('unknown config "does_not_exist"', out[1]) + def test_should_delete_build_outside_revision_range(self): messages = [] self.env.log = Mock(info=lambda msg, *args: messages.append(msg))