diff --git a/master/buildbot/config.py b/master/buildbot/config.py index 1960044baef..0bb9df92c66 100644 --- a/master/buildbot/config.py +++ b/master/buildbot/config.py @@ -538,13 +538,20 @@ 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 - error(msg) - - if not util.identifiers.isIdentifier(50, sl.slavename): - msg = "Buildslave name %r is not a 50-character identifier" % (sl.slavename,) - error(msg) + def validate(slavename): + if sl.slavename in ("debug", "change", "status"): + yield "slave name %r - is reserved" % slavename + if not isinstance(slavename, unicode): + yield "slave name %r - is not a unicode string" % slavename + if not util.identifiers.ident_re.match(slavename): + yield "slave name %r - is not an identifier" % slavename + if len(slavename) < 1: + yield "slave name %r - identifiers 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']