aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_forcesched.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_forcesched.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_forcesched.py506
1 files changed, 0 insertions, 506 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_forcesched.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_forcesched.py
deleted file mode 100644
index 12476224..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/test/unit/test_schedulers_forcesched.py
+++ /dev/null
@@ -1,506 +0,0 @@
-# This file is part of Buildbot. Buildbot is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation, version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright Buildbot Team Members
-
-from twisted.trial import unittest
-from twisted.internet import defer
-from buildbot import config
-from buildbot.schedulers.forcesched import ForceScheduler, StringParameter
-from buildbot.schedulers.forcesched import IntParameter, FixedParameter
-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, BaseParameter
-from buildbot.test.util import scheduler
-from buildbot.test.util.config import ConfigErrorsMixin
-
-class TestForceScheduler(scheduler.SchedulerMixin, ConfigErrorsMixin, unittest.TestCase):
-
- OBJECTID = 19
-
- def setUp(self):
- self.setUpScheduler()
-
- def tearDown(self):
- self.tearDownScheduler()
-
- def makeScheduler(self, name='testsched', builderNames=['a', 'b'],
- **kw):
- sched = self.attachScheduler(
- ForceScheduler(name=name, builderNames=builderNames,**kw),
- self.OBJECTID)
- sched.master.config = config.MasterConfig()
-
- self.assertEquals(sched.name, name)
-
- return sched
-
- # tests
-
- def test_compare_branch(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[]),
- ForceScheduler(name="testched", builderNames=[],
- branch=FixedParameter("branch","fishing/pole")))
-
-
- def test_compare_reason(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[],
- reason=FixedParameter("reason","no fish for you!")),
- ForceScheduler(name="testched", builderNames=[],
- reason=FixedParameter("reason","thanks for the fish!")))
-
-
- def test_compare_revision(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[],
- revision=FixedParameter("revision","fish-v1")),
- ForceScheduler(name="testched", builderNames=[],
- revision=FixedParameter("revision","fish-v2")))
-
-
- def test_compare_repository(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[],
- repository=FixedParameter("repository","git://pond.org/fisher.git")),
- ForceScheduler(name="testched", builderNames=[],
- repository=FixedParameter("repository","svn://ocean.com/trawler/")))
-
-
- def test_compare_project(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[],
- project=FixedParameter("project","fisher")),
- ForceScheduler(name="testched", builderNames=[],
- project=FixedParameter("project","trawler")))
-
-
- def test_compare_username(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[]),
- ForceScheduler(name="testched", builderNames=[],
- project=FixedParameter("username","The Fisher King <avallach@atlantis.al>")))
-
-
- def test_compare_properties(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[],
- properties=[]),
- ForceScheduler(name="testched", builderNames=[],
- properties=[FixedParameter("prop","thanks for the fish!")]))
-
- def test_compare_codebases(self):
- self.assertNotEqual(
- ForceScheduler(name="testched", builderNames=[],
- codebases=['bar']),
- ForceScheduler(name="testched", builderNames=[],
- codebases=['foo']))
-
-
- @defer.inlineCallbacks
- def test_basicForce(self):
- sched = self.makeScheduler()
-
- res = yield sched.force('user', builderNames=['a'], branch='a', reason='because',revision='c',
- repository='d', project='p',
- property1_name='p1',property1_value='e',
- property2_name='p2',property2_value='f',
- property3_name='p3',property3_value='g',
- property4_name='p4',property4_value='h'
- )
- bsid,brids = res
-
- # only one builder forced, so there should only be one brid
- self.assertEqual(len(brids), 1)
-
- self.db.buildsets.assertBuildset\
- (bsid,
- dict(reason="A build was forced by 'user': because",
- brids=brids,
- external_idstring=None,
- properties=[ ('owner', ('user', 'Force Build Form')),
- ('p1', ('e', 'Force Build Form')),
- ('p2', ('f', 'Force Build Form')),
- ('p3', ('g', 'Force Build Form')),
- ('p4', ('h', 'Force Build Form')),
- ('reason', ('because', 'Force Build Form')),
- ('scheduler', ('testsched', 'Scheduler')),
- ],
- sourcestampsetid=100),
- {'':
- dict(branch='a', revision='c', repository='d', codebase='',
- project='p', sourcestampsetid=100)
- })
-
- @defer.inlineCallbacks
- def test_force_allBuilders(self):
- sched = self.makeScheduler()
-
- res = yield sched.force('user', branch='a', reason='because',revision='c',
- repository='d', project='p',
- )
- bsid,brids = res
-
- self.assertEqual(len(brids), 2)
-
- self.db.buildsets.assertBuildset\
- (bsid,
- dict(reason="A build was forced by 'user': because",
- brids=brids,
- builders = ['a', 'b'],
- external_idstring=None,
- properties=[ ('owner', ('user', 'Force Build Form')),
- ('reason', ('because', 'Force Build Form')),
- ('scheduler', ('testsched', 'Scheduler')),
- ],
- sourcestampsetid=100),
- {'':
- dict(branch='a', revision='c', repository='d', codebase='',
- project='p', sourcestampsetid=100)
- })
-
- @defer.inlineCallbacks
- def test_force_someBuilders(self):
- sched = self.makeScheduler(builderNames=['a','b','c'])
-
- res = yield sched.force('user', builderNames=['a','b'],
- branch='a', reason='because',revision='c',
- repository='d', project='p',
- )
- bsid,brids = res
-
- self.assertEqual(len(brids), 2)
-
- self.db.buildsets.assertBuildset\
- (bsid,
- dict(reason="A build was forced by 'user': because",
- brids=brids,
- builders = ['a', 'b'],
- external_idstring=None,
- properties=[ ('owner', ('user', 'Force Build Form')),
- ('reason', ('because', 'Force Build Form')),
- ('scheduler', ('testsched', 'Scheduler')),
- ],
- sourcestampsetid=100),
- {'':
- dict(branch='a', revision='c', repository='d', codebase='',
- project='p', sourcestampsetid=100)
- })
-
- def test_bad_codebases(self):
- # cant specify both codebases and branch/revision/project/repository:
- self.assertRaisesConfigError("ForceScheduler: Must either specify 'codebases' or the 'branch/revision/repository/project' parameters:",
- lambda: ForceScheduler(name='foo', builderNames=['bar'],
- codebases=['foo'], branch=StringParameter('name')))
- self.assertRaisesConfigError("ForceScheduler: Must either specify 'codebases' or the 'branch/revision/repository/project' parameters:",
- lambda: ForceScheduler(name='foo', builderNames=['bar'],
- codebases=['foo'], revision=StringParameter('name')))
- self.assertRaisesConfigError("ForceScheduler: Must either specify 'codebases' or the 'branch/revision/repository/project' parameters:",
- lambda: ForceScheduler(name='foo', builderNames=['bar'],
- codebases=['foo'], project=StringParameter('name')))
- self.assertRaisesConfigError("ForceScheduler: Must either specify 'codebases' or the 'branch/revision/repository/project' parameters:",
- lambda: ForceScheduler(name='foo', builderNames=['bar'],
- codebases=['foo'], repository=StringParameter('name')))
-
- # codebases must be a list of either string or BaseParameter types
- self.assertRaisesConfigError("ForceScheduler: 'codebases' must be a list of strings or CodebaseParameter objects:",
- lambda: ForceScheduler(name='foo', builderNames=['bar'],
- codebases=[123],))
- self.assertRaisesConfigError("ForceScheduler: 'codebases' must be a list of strings or CodebaseParameter objects:",
- lambda: ForceScheduler(name='foo', builderNames=['bar'],
- codebases=[IntParameter('foo')],))
-
- # codebases cannot be empty
- self.assertRaisesConfigError("ForceScheduler: 'codebases' cannot be empty; use CodebaseParameter(codebase='', hide=True) if needed:",
- lambda: ForceScheduler(name='foo',
- builderNames=['bar'],
- codebases=[]))
-
- @defer.inlineCallbacks
- def test_good_codebases(self):
- sched = self.makeScheduler(codebases=['foo', CodebaseParameter('bar')])
- res = yield sched.force('user', builderNames=['a'], reason='because',
- foo_branch='a', foo_revision='c', foo_repository='d', foo_project='p',
- bar_branch='a2', bar_revision='c2', bar_repository='d2', bar_project='p2',
- property1_name='p1',property1_value='e',
- property2_name='p2',property2_value='f',
- property3_name='p3',property3_value='g',
- property4_name='p4',property4_value='h'
- )
-
- bsid,brids = res
- self.db.buildsets.assertBuildset\
- (bsid,
- dict(reason="A build was forced by 'user': because",
- brids=brids,
- external_idstring=None,
- properties=[ ('owner', ('user', 'Force Build Form')),
- ('p1', ('e', 'Force Build Form')),
- ('p2', ('f', 'Force Build Form')),
- ('p3', ('g', 'Force Build Form')),
- ('p4', ('h', 'Force Build Form')),
- ('reason', ('because', 'Force Build Form')),
- ('scheduler', ('testsched', 'Scheduler')),
- ],
- sourcestampsetid=100),
- {'foo': dict(codebase='foo', sourcestampsetid=100,
- branch='a', revision='c', repository='d', project='p', ),
- 'bar': dict(codebase='bar', sourcestampsetid=100,
- branch='a2', revision='c2', repository='d2', project='p2', ),
- })
-
- # value = the value to be sent with the parameter (ignored if req is set)
- # expect = the expected result (can be an exception type)
- # klass = the parameter class type
- # req = use this request instead of the auto-generated one based on value
- @defer.inlineCallbacks
- def do_ParameterTest(self,
- expect,
- klass,
- expectKind=None, # None=one prop, Exception=exception, dict=many props
- owner='user',
- value=None, req=None,
- **kwargs):
-
- name = kwargs.setdefault('name', 'p1')
-
- # construct one if needed
- if isinstance(klass, type):
- prop = klass(**kwargs)
- else:
- prop = klass
-
- self.assertEqual(prop.name, name)
- self.assertEqual(prop.label, kwargs.get('label', prop.name))
-
- sched = self.makeScheduler(properties=[prop])
-
- if not req:
- req = {name:value, 'reason':'because'}
- try:
- bsid, brids = yield sched.force(owner, builderNames=['a'], **req)
- except Exception,e:
- if expectKind is not Exception:
- # an exception is not expected
- raise
- if not isinstance(e, expect):
- # the exception is the wrong kind
- raise
- defer.returnValue(None) # success
-
- expect_props = [
- ('owner', ('user', 'Force Build Form')),
- ('reason', ('because', 'Force Build Form')),
- ('scheduler', ('testsched', 'Scheduler')),
- ]
-
- if expectKind is None:
- expect_props.append((name, (expect, 'Force Build Form')))
- elif expectKind is dict:
- for k,v in expect.iteritems():
- expect_props.append((k, (v, 'Force Build Form')))
- else:
- self.fail("expectKind is wrong type!")
-
- self.db.buildsets.assertBuildset\
- (bsid,
- dict(reason="A build was forced by 'user': because",
- brids=brids,
- external_idstring=None,
- properties=sorted(expect_props),
- sourcestampsetid=100),
- {"":
- dict(branch="", revision="", repository="", codebase='',
- project="", sourcestampsetid=100)
- })
-
- def test_StringParameter(self):
- self.do_ParameterTest(value="testedvalue", expect="testedvalue",
- klass=StringParameter)
-
- def test_IntParameter(self):
- self.do_ParameterTest(value="123", expect=123, klass=IntParameter)
-
-
- def test_FixedParameter(self):
- self.do_ParameterTest(value="123", expect="321", klass=FixedParameter,
- default="321")
-
-
- def test_BooleanParameter_True(self):
- req = dict(p1=True,reason='because')
- self.do_ParameterTest(value="123", expect=True, klass=BooleanParameter,
- req=req)
-
-
- def test_BooleanParameter_False(self):
- req = dict(p2=True,reason='because')
- self.do_ParameterTest(value="123", expect=False,
- klass=BooleanParameter, req=req)
-
-
- def test_UserNameParameter(self):
- email = "test <test@buildbot.net>"
- self.do_ParameterTest(value=email, expect=email,
- klass=UserNameParameter(),
- name="username", label="Your name:")
-
-
- def test_UserNameParameterError(self):
- for value in ["test","test@buildbot.net","<test@buildbot.net>"]:
- self.do_ParameterTest(value=value,
- expect=ValidationError,
- expectKind=Exception,
- klass=UserNameParameter(debug=False),
- name="username", label="Your name:")
-
-
- def test_ChoiceParameter(self):
- self.do_ParameterTest(value='t1', expect='t1',
- klass=ChoiceStringParameter, choices=['t1','t2'])
-
-
- def test_ChoiceParameterError(self):
- self.do_ParameterTest(value='t3',
- expect=ValidationError,
- expectKind=Exception,
- klass=ChoiceStringParameter, choices=['t1','t2'],
- debug=False)
-
- def test_ChoiceParameterError_notStrict(self):
- self.do_ParameterTest(value='t1', expect='t1',
- strict=False,
- klass=ChoiceStringParameter, choices=['t1','t2'])
-
-
- def test_ChoiceParameterMultiple(self):
- self.do_ParameterTest(value=['t1','t2'], expect=['t1','t2'],
- klass=ChoiceStringParameter,choices=['t1','t2'], multiple=True)
-
-
- def test_ChoiceParameterMultipleError(self):
- self.do_ParameterTest(value=['t1','t3'],
- expect=ValidationError,
- expectKind=Exception,
- klass=ChoiceStringParameter, choices=['t1','t2'],
- multiple=True, debug=False)
-
-
- def test_NestedParameter(self):
- fields = [
- IntParameter(name="foo")
- ]
- self.do_ParameterTest(req=dict(p1_foo='123', reason="because"),
- expect=dict(foo=123),
- klass=NestedParameter, fields=fields)
-
- def test_NestedNestedParameter(self):
- fields = [
- NestedParameter(name="inner", fields=[
- StringParameter(name='str'),
- AnyPropertyParameter(name='any')
- ]),
- IntParameter(name="foo")
- ]
- self.do_ParameterTest(req=dict(p1_foo='123',
- p1_inner_str="bar",
- p1_inner_any_name="hello",
- p1_inner_any_value="world",
- reason="because"),
- expect=dict(foo=123, inner=dict(str="bar", hello="world")),
- klass=NestedParameter, fields=fields)
-
- def test_NestedParameter_nullname(self):
- # same as above except "p1" and "any" are skipped
- fields = [
- NestedParameter(name="inner", fields=[
- StringParameter(name='str'),
- AnyPropertyParameter(name='')
- ]),
- IntParameter(name="foo"),
- NestedParameter(name='bar', fields=[
- NestedParameter(name='', fields=[AnyPropertyParameter(name='a')]),
- NestedParameter(name='', fields=[AnyPropertyParameter(name='b')])
- ])
- ]
- self.do_ParameterTest(req=dict(foo='123',
- inner_str="bar",
- inner_name="hello",
- inner_value="world",
- reason="because",
- bar_a_name="a",
- bar_a_value="7",
- bar_b_name="b",
- bar_b_value="8"),
- expect=dict(foo=123,
- inner=dict(str="bar", hello="world"),
- bar={'a':'7', 'b':'8'}),
- expectKind=dict,
- klass=NestedParameter, fields=fields, name='')
-
- def test_bad_reason(self):
- self.assertRaisesConfigError("ForceScheduler reason must be a StringParameter",
- lambda: ForceScheduler(name='testsched', builderNames=[],
- codebases=['bar'], reason="foo"))
-
- def test_bad_username(self):
- self.assertRaisesConfigError("ForceScheduler username must be a StringParameter",
- lambda: ForceScheduler(name='testsched', builderNames=[],
- codebases=['bar'], username="foo"))
-
- def test_notstring_name(self):
- self.assertRaisesConfigError("ForceScheduler name must be a unicode string:",
- lambda: ForceScheduler(name=1234, builderNames=[],
- codebases=['bar'], username="foo"))
-
- def test_emptystring_name(self):
- self.assertRaisesConfigError("ForceScheduler name must not be empty:",
- lambda: ForceScheduler(name='', builderNames=[],
- codebases=['bar'], username="foo"))
-
- def test_integer_builderNames(self):
- self.assertRaisesConfigError("ForceScheduler builderNames must be a list of strings:",
- lambda: ForceScheduler(name='testsched', builderNames=1234,
- codebases=['bar'], username="foo"))
-
- def test_listofints_builderNames(self):
- self.assertRaisesConfigError("ForceScheduler builderNames must be a list of strings:",
- lambda: ForceScheduler(name='testsched', builderNames=[1234],
- codebases=['bar'], username="foo"))
-
- def test_listofmixed_builderNames(self):
- self.assertRaisesConfigError("ForceScheduler builderNames must be a list of strings:",
- 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 BaseParameters:",
- 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]))