Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #1763 from byilmazturk/myfixes
fix for #3223
  • Loading branch information
tardyp committed Aug 2, 2015
2 parents dd4444a + 37b1f6d commit 096ba0a
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
14 changes: 12 additions & 2 deletions master/buildbot/config.py
Expand Up @@ -25,6 +25,7 @@
from buildbot.util import config as util_config
from buildbot.util import safeTranslate
from buildbot.util import service as util_service
from buildbot.util import identifiers as util_identifiers
from buildbot.www import auth
from buildbot.www import avatar
from buildbot.www.authz import authz
Expand Down Expand Up @@ -541,8 +542,17 @@ def load_slaves(self, filename, config_dict):
error(msg)
return

if sl.slavename in ("debug", "change", "status"):
msg = "slave name '%s' is reserved" % sl.slavename
def validate(slavename):
if slavename in ("debug", "change", "status"):
yield "slave name %r is reserved" % slavename
if not util_identifiers.ident_re.match(slavename):
yield "slave name %r is not an identifier" % slavename
if not slavename:
yield "slave name %r cannot be an empty string" % slavename
if len(slavename) > 50:
yield "slave name %r is longer than %d characters" % (slavename, 50)

for msg in validate(sl.slavename):
error(msg)

self.slaves = config_dict['slaves']
Expand Down
23 changes: 23 additions & 0 deletions master/buildbot/test/unit/test_config.py
Expand Up @@ -756,6 +756,29 @@ def test_load_slaves_reserved_names(self):
self.assertConfigError(self.errors, "is reserved")
self.errors.errors[:] = [] # clear out the errors

def test_load_slaves_not_identifiers(self):
for name in (u"123 no initial digits", u"spaces not allowed",
u'a/b', u'\N{SNOWMAN}', u"a.b.c.d", u"a-b_c.d9",):
self.cfg.load_slaves(self.filename,
dict(slaves=[buildslave.BuildSlave(name, 'x')]))
self.assertConfigError(self.errors, "is not an identifier")
self.errors.errors[:] = [] # clear out the errors

def test_load_slaves_too_long(self):
name = u"a" * 51
self.cfg.load_slaves(self.filename,
dict(slaves=[buildslave.BuildSlave(name, 'x')]))
self.assertConfigError(self.errors, "is longer than")
self.errors.errors[:] = [] # clear out the errors

def test_load_slaves_empty(self):
name = u""
self.cfg.load_slaves(self.filename,
dict(slaves=[buildslave.BuildSlave(name, 'x')]))
self.errors.errors[:] = self.errors.errors[1:2] # only get necessary error
self.assertConfigError(self.errors, "cannot be an empty string")
self.errors.errors[:] = [] # clear out the errors

def test_load_slaves(self):
sl = buildslave.BuildSlave('foo', 'x')
self.cfg.load_slaves(self.filename,
Expand Down

0 comments on commit 096ba0a

Please sign in to comment.