Skip to content

Commit

Permalink
Report SyntaxError or ImportError from checkconfig and `upgrade…
Browse files Browse the repository at this point in the history
…-master`.
  • Loading branch information
tomprince committed Jun 19, 2013
1 parent 4ea0e5f commit 18533b2
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
8 changes: 7 additions & 1 deletion master/buildbot/scripts/checkconfig.py
Expand Up @@ -40,7 +40,13 @@ def checkconfig(config):

if os.path.isdir(configFile):
basedir = configFile
configFile = getConfigFileFromTac(basedir)
try:
configFile = getConfigFileFromTac(basedir)
except (SyntaxError, ImportError) as e:
if not quiet:
print "Unable to load 'buildbot.tac' from '%s':" % basedir
print e
return 1
else:
basedir = os.getcwd()

Expand Down
8 changes: 7 additions & 1 deletion master/buildbot/scripts/upgrade_master.py
Expand Up @@ -159,7 +159,13 @@ def upgradeMaster(config, _noMonkey=False):

os.chdir(config['basedir'])

configFile = base.getConfigFileFromTac(config['basedir'])
try:
configFile = base.getConfigFileFromTac(config['basedir'])
except (SyntaxError, ImportError) as e:
print "Unable to load 'buildbot.tac' from '%s':" % config['basedir']
print e
defer.returnValue(1)
return
master_cfg = loadConfig(config, configFile)
if not master_cfg:
defer.returnValue(1)
Expand Down
12 changes: 11 additions & 1 deletion master/buildbot/test/unit/test_scripts_checkconfig.py
Expand Up @@ -23,7 +23,7 @@
import cStringIO
from twisted.trial import unittest
from buildbot.test.util import dirs, compat
from buildbot.scripts import checkconfig
from buildbot.scripts import base, checkconfig

class TestConfigLoader(dirs.DirsMixin, unittest.TestCase):

Expand Down Expand Up @@ -157,3 +157,13 @@ def test_checkconfig_quiet(self):
self.assertEqual(checkconfig.checkconfig(config), 3)
self.loadConfig.assert_called_with(basedir=os.getcwd(), configFile='master.cfg', quiet=True)

def test_checkconfig_syntaxError_quiet(self):
"""
When C{base.getConfigFileFromTac} raises L{SyntaxError},
C{checkconfig.checkconfig} return an error.
"""
mockGetConfig = mock.Mock(spec=base.getConfigFileFromTac,
side_effect=SyntaxError)
self.patch(checkconfig, 'getConfigFileFromTac', mockGetConfig)
config = dict(configFile='.', quiet=True)
self.assertEqual(checkconfig.checkconfig(config), 1)

0 comments on commit 18533b2

Please sign in to comment.