[Buildbot-commits] buildbot/buildbot/test test_config.py,1.23,1.24

Brian Warner warner at users.sourceforge.net
Wed Jul 20 04:22:00 UTC 2005


Update of /cvsroot/buildbot/buildbot/buildbot/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14016/buildbot/test

Modified Files:
	test_config.py 
Log Message:
Revision: arch at buildbot.sf.net--2004/buildbot--dev--0--patch-254
Creator:  Brian Warner <warner at lothar.com>

add sanity checks to the config file parser

	* buildbot/master.py (BuildMaster.loadConfig): Add sanity checks
	to make sure that c['sources'], c['schedulers'], and c['status']
	are all lists of the appropriate objects, and that the Schedulers
	all point to real Builders
	* buildbot/test/test_config.py (ConfigTest.testSchedulers): test it


Index: test_config.py
===================================================================
RCS file: /cvsroot/buildbot/buildbot/buildbot/test/test_config.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- test_config.py	19 Jul 2005 23:23:21 -0000	1.23
+++ test_config.py	20 Jul 2005 04:21:57 -0000	1.24
@@ -5,7 +5,7 @@
 
 from twisted.trial import unittest
 dr = unittest.deferredResult
-from twisted.python import components
+from twisted.python import components, failure
 from twisted.internet import defer
 
 try:
@@ -14,7 +14,7 @@
 except ImportError:
     cvstoys = None
 
-from buildbot.twcompat import providedBy
+from buildbot.twcompat import providedBy, maybeWait
 from buildbot.master import BuildMaster
 from buildbot import scheduler
 from twisted.application import service, internet
@@ -491,13 +491,19 @@
         dr(d)
         self.failUnlessEqual(list(master.change_svc), [])
 
+    def shouldBeFailure(self, res, *expected):
+        self.failUnless(isinstance(res, failure.Failure),
+                        "we expected this to fail, not produce %s" % (res,))
+        res.trap(*expected)
+        return None # all is good
+
     def testSchedulers(self):
         master = self.buildmaster
         master.loadChanges()
         master.loadConfig(emptyCfg)
         self.failUnlessEqual(master.schedulers, [])
 
-        schedulersCfg = \
+        self.schedulersCfg = \
 """
 from buildbot.scheduler import Scheduler
 from buildbot.process.factory import BasicBuildFactory
@@ -515,10 +521,42 @@
 BuildmasterConfig = c
 """
 
-        d = master.loadConfig(schedulersCfg)
-        dr(d)
-        self.failUnlessEqual(len(master.schedulers), 1)
-        s = master.schedulers[0]
+        # c['schedulers'] must be a list
+        badcfg = self.schedulersCfg + \
+"""
+c['schedulers'] = Scheduler('full', None, 60, ['builder1'])
+"""
+        d = defer.maybeDeferred(self.buildmaster.loadConfig, badcfg)
+        d.addBoth(self._testSchedulers_1)
+        return maybeWait(d)
+    def _testSchedulers_1(self, res):
+        self.shouldBeFailure(res, AssertionError)
+        # c['schedulers'] must be a list of IScheduler objects
+        badcfg = self.schedulersCfg + \
+"""
+c['schedulers'] = ['oops', 'problem']
+"""
+        d = defer.maybeDeferred(self.buildmaster.loadConfig, badcfg)
+        d.addBoth(self._testSchedulers_2)
+        return d
+    def _testSchedulers_2(self, res):
+        self.shouldBeFailure(res, AssertionError, components.CannotAdapt)
+        # c['schedulers'] must point at real builders
+        badcfg = self.schedulersCfg + \
+"""
+c['schedulers'] = [Scheduler('full', None, 60, ['builder-bogus'])]
+"""
+        d = defer.maybeDeferred(self.buildmaster.loadConfig, badcfg)
+        d.addBoth(self._testSchedulers_3)
+        return d
+    def _testSchedulers_3(self, res):
+        self.shouldBeFailure(res, AssertionError)
+        d = self.buildmaster.loadConfig(self.schedulersCfg)
+        d.addCallback(self._testSchedulers_4)
+        return d
+    def _testSchedulers_4(self, res):
+        self.failUnlessEqual(len(self.buildmaster.schedulers), 1)
+        s = self.buildmaster.schedulers[0]
         self.failUnless(isinstance(s, scheduler.Scheduler))
         self.failUnlessEqual(s.name, "full")
         self.failUnlessEqual(s.branch, None)





More information about the Commits mailing list