diff --git a/master/buildbot/schedulers/forcesched.py b/master/buildbot/schedulers/forcesched.py index 93c4b4d0e48..69a6a89c959 100644 --- a/master/buildbot/schedulers/forcesched.py +++ b/master/buildbot/schedulers/forcesched.py @@ -491,6 +491,17 @@ def __init__(self, name, builderNames, config.error("ForceScheduler reason must be a StringParameter: %r" % reason) + if isinstance(properties, list): + if properties: + for item in properties: + if not isinstance(item, BaseParameter): + config.error("ForceScheduler properties must be a list of BaseParameters: %r" % + properties) + else: + config.error("ForceScheduler properties must be a list of BaseParameter: %r" % + properties) + + if isinstance(username, BaseParameter): self.username = username else: diff --git a/master/buildbot/test/unit/test_schedulers_forcesched.py b/master/buildbot/test/unit/test_schedulers_forcesched.py index d40356559b7..42be0b8501a 100644 --- a/master/buildbot/test/unit/test_schedulers_forcesched.py +++ b/master/buildbot/test/unit/test_schedulers_forcesched.py @@ -21,7 +21,7 @@ from buildbot.schedulers.forcesched import BooleanParameter, UserNameParameter from buildbot.schedulers.forcesched import ChoiceStringParameter, ValidationError from buildbot.schedulers.forcesched import NestedParameter, AnyPropertyParameter -from buildbot.schedulers.forcesched import CodebaseParameter +from buildbot.schedulers.forcesched import CodebaseParameter, BaseParameter from buildbot.test.util import scheduler from buildbot.test.util.config import ConfigErrorsMixin @@ -480,3 +480,22 @@ def test_listofmixed_builderNames(self): lambda: ForceScheduler(name='testsched', builderNames=['test', 1234], codebases=['bar'], username="foo")) + + def test_integer_properties(self): + self.assertRaisesConfigError("ForceScheduler properties must be a list of Base Parameters:", + lambda: ForceScheduler(name='testsched', builderNames=[], + codebases=['bar'], username="foo", + properties=1234)) + + def test_listofints_properties(self): + self.assertRaisesConfigError("ForceScheduler properties must be a list of BaseParameters:", + lambda: ForceScheduler(name='testsched', builderNames=[], + codebases=['bar'], username="foo", + properties=[1234, 2345])) + + def test_listofmixed_properties(self): + self.assertRaisesConfigError("ForceScheduler properties must be a list of BaseParameters:", + lambda: ForceScheduler(name='testsched', builderNames=[], + codebases=['bar'], username="foo", + properties=[BaseParameter(name="test",), + 4567]))