Ejemplo n.º 1
0
 def test_getConfigDict_collapseRequests(self):
     for cr in (False, lambda a, b, c: False):
         cfg = BuilderConfig(name='b',
                             collapseRequests=cr,
                             factory=self.factory,
                             workername='s1')
         self.assertEqual(
             cfg.getConfigDict(), {
                 'builddir': 'b',
                 'collapseRequests': cr,
                 'name': 'b',
                 'workerbuilddir': 'b',
                 'factory': self.factory,
                 'workernames': ['s1'],
             })
Ejemplo n.º 2
0
 def test_init_next_worker_keyword(self):
     f = lambda: None
     cfg = BuilderConfig(name='a b c',
                         workername='a',
                         factory=self.factory,
                         nextWorker=f)
     self.assertEqual(cfg.nextWorker, f)
Ejemplo n.º 3
0
 def test_tags_no_tag_dupes(self):
     with self.assertRaisesConfigError(
             "builder 'a': tags list contains duplicate tags: abc"):
         BuilderConfig(tags=['abc', 'bca', 'abc'],
                       name='a',
                       workernames=['a'],
                       factory=self.factory)
Ejemplo n.º 4
0
 def test_args(self):
     cfg = BuilderConfig(name='b',
                         workername='s1',
                         workernames='s2',
                         builddir='bd',
                         workerbuilddir='wbd',
                         factory=self.factory,
                         tags=['c'],
                         nextWorker=lambda: 'ns',
                         nextBuild=lambda: 'nb',
                         locks=['l'],
                         env=dict(x=10),
                         properties=dict(y=20),
                         collapseRequests='cr',
                         description='buzz')
     self.assertIdentical(cfg.factory, self.factory)
     self.assertAttributes(cfg,
                           name='b',
                           workernames=['s2', 's1'],
                           builddir='bd',
                           workerbuilddir='wbd',
                           tags=['c'],
                           locks=['l'],
                           env={'x': 10},
                           properties={'y': 20},
                           collapseRequests='cr',
                           description='buzz')
Ejemplo n.º 5
0
    def test_init_workerbuilddir_keyword(self):
        cfg = BuilderConfig(name='a b c',
                            workername='a',
                            factory=self.factory,
                            workerbuilddir="dir")

        self.assertEqual(cfg.workerbuilddir, 'dir')
Ejemplo n.º 6
0
 def test_tags_must_be_list_of_str(self):
     with self.assertRaisesConfigError(
             "tags list contains something that is not a string"):
         BuilderConfig(tags=['abc', 13],
                       name='a',
                       workernames=['a'],
                       factory=self.factory)
Ejemplo n.º 7
0
 def test_inv_env(self):
     with self.assertRaisesConfigError(
             "builder's env must be a dictionary"):
         BuilderConfig(env="foo",
                       name="a",
                       workernames=['a'],
                       factory=self.factory)
Ejemplo n.º 8
0
 def mapper(b):
     if isinstance(b, BuilderConfig):
         return b
     elif isinstance(b, dict):
         return BuilderConfig(**b)
     else:
         error(f"{repr(b)} is not a builder config (in c['builders']")
     return None
Ejemplo n.º 9
0
    def test_init_workerbuilddir_positional(self):
        with assertNotProducesWarnings(DeprecatedApiWarning):
            cfg = BuilderConfig('a b c',
                                'a',
                                None,
                                None,
                                'dir',
                                factory=self.factory)

        self.assertEqual(cfg.workerbuilddir, 'dir')
Ejemplo n.º 10
0
 def test_getConfigDict(self):
     ns = lambda: 'ns'
     nb = lambda: 'nb'
     cfg = BuilderConfig(name='b',
                         workername='s1',
                         workernames='s2',
                         builddir='bd',
                         workerbuilddir='wbd',
                         factory=self.factory,
                         tags=['c'],
                         nextWorker=ns,
                         nextBuild=nb,
                         locks=['l'],
                         env=dict(x=10),
                         properties=dict(y=20),
                         collapseRequests='cr',
                         description='buzz')
     self.assertEqual(
         cfg.getConfigDict(), {
             'builddir': 'bd',
             'tags': ['c'],
             'description': 'buzz',
             'env': {
                 'x': 10
             },
             'factory': self.factory,
             'locks': ['l'],
             'collapseRequests': 'cr',
             'name': 'b',
             'nextBuild': nb,
             'nextWorker': ns,
             'properties': {
                 'y': 20
             },
             'workerbuilddir': 'wbd',
             'workernames': ['s2', 's1'],
         })
Ejemplo n.º 11
0
 def test_defaults(self):
     cfg = BuilderConfig(name='a b c', workername='a', factory=self.factory)
     self.assertIdentical(cfg.factory, self.factory)
     self.assertAttributes(cfg,
                           name='a b c',
                           workernames=['a'],
                           builddir='a_b_c',
                           workerbuilddir='a_b_c',
                           tags=[],
                           nextWorker=None,
                           locks=[],
                           env={},
                           properties={},
                           collapseRequests=None,
                           description=None)
Ejemplo n.º 12
0
 def test_unicode_name(self):
     cfg = BuilderConfig(name='a \N{SNOWMAN} c',
                         workername='a',
                         factory=self.factory)
     self.assertIdentical(cfg.factory, self.factory)
     self.assertAttributes(cfg, name='a \N{SNOWMAN} c')
Ejemplo n.º 13
0
 def test_too_long_default_property(self):
     with self.assertRaisesConfigError("exceeds maximum length of"):
         BuilderConfig(name="a",
                       workernames=['a'],
                       factory=self.factory,
                       defaultProperties={'a' * 257: 'value'})
Ejemplo n.º 14
0
 def test_tags_must_be_list(self):
     with self.assertRaisesConfigError("tags must be a list"):
         BuilderConfig(tags='abc',
                       name='a',
                       workernames=['a'],
                       factory=self.factory)
Ejemplo n.º 15
0
 def test_bogus_workername(self):
     with self.assertRaisesConfigError("workername must be a string"):
         BuilderConfig(name='a', workername=1, factory=self.factory)
Ejemplo n.º 16
0
 def test_bogus_workernames(self):
     with self.assertRaisesConfigError(
             "workernames must be a list or a string"):
         BuilderConfig(name='a', workernames={1: 2}, factory=self.factory)
Ejemplo n.º 17
0
 def test_no_workernames(self):
     with self.assertRaisesConfigError(
             "builder 'a': at least one workername is required"):
         BuilderConfig(name='a', factory=self.factory)
Ejemplo n.º 18
0
 def test_wrong_type_factory(self):
     with self.assertRaisesConfigError("builder 'a's factory is not"):
         BuilderConfig(factory=[], name='a', workernames=['a'])
Ejemplo n.º 19
0
 def test_no_factory(self):
     with self.assertRaisesConfigError("builder 'a' has no factory"):
         BuilderConfig(name='a', workernames=['a'])
Ejemplo n.º 20
0
 def test_utf8_name(self):
     with self.assertRaisesConfigError(
             "builder names must be unicode or ASCII"):
         BuilderConfig(name="\N{SNOWMAN}".encode('utf-8'),
                       factory=self.factory,
                       workernames=['a'])
Ejemplo n.º 21
0
 def test_reserved_name(self):
     with self.assertRaisesConfigError(
             "builder names must not start with an underscore: '_a'"):
         BuilderConfig(name='_a', factory=self.factory, workernames=['a'])
Ejemplo n.º 22
0
 def test_inv_nextWorker(self):
     with self.assertRaisesConfigError("nextWorker must be a callable"):
         BuilderConfig(nextWorker="foo",
                       name="a",
                       workernames=['a'],
                       factory=self.factory)
Ejemplo n.º 23
0
    def test_init_workernames_positional(self):
        with assertNotProducesWarnings(DeprecatedApiWarning):
            cfg = BuilderConfig('a b c', None, ['a'], factory=self.factory)

        self.assertEqual(cfg.workernames, ['a'])
Ejemplo n.º 24
0
    def test_init_workernames_keyword(self):
        cfg = BuilderConfig(name='a b c',
                            workernames=['a'],
                            factory=self.factory)

        self.assertEqual(cfg.workernames, ['a'])
Ejemplo n.º 25
0
 def test_no_name(self):
     with self.assertRaisesConfigError("builder's name is required"):
         BuilderConfig(factory=self.factory, workernames=['a'])
Ejemplo n.º 26
0
 def test_inv_canStartBuild(self):
     with self.assertRaisesConfigError("canStartBuild must be a callable"):
         BuilderConfig(canStartBuild="foo",
                       name="a",
                       workernames=['a'],
                       factory=self.factory)