changeset 893:ed77e3e1c43f

BuildConfig may be `None` when checking to see if build should be deleted. Fix + test, closes #666.
author osimons
date Tue, 08 Mar 2011 03:19:17 +0000
parents 60d0807334ec
children 7d93d6358fe0
files bitten/queue.py bitten/tests/queue.py
diffstat 2 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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))
Copyright (C) 2012-2017 Edgewall Software