Exemplo n.º 1
0
    def test_tree(self):
        config = ConfigManager.from_dict({})

        class ComponentB(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option('foo', parser=int, default='2')
            required_config.add_option('bar', parser=int, default='1')

            def __init__(self, config):
                self.config = config.with_options(self)

        class ComponentA(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option('baz', default='abc')

            def __init__(self, config):
                self.config = config.with_options(self)
                self.comp = ComponentB(config.with_namespace('biff'))

            def get_runtime_config(self, namespace=None):
                for item in super(ComponentA,
                                  self).get_runtime_config(namespace):
                    yield item

                for item in self.comp.get_runtime_config(['biff']):
                    yield item

        comp = ComponentA(config)

        assert (list(comp.get_runtime_config()) == [
            ([], 'baz', 'abc', Option(key='baz', default='abc')),
            (['biff'], 'foo', '2', Option(key='foo', parser=int, default='2')),
            (['biff'], 'bar', '1', Option(key='bar', parser=int, default='1')),
        ])
Exemplo n.º 2
0
    def test_tree_with_specified_namespace(self):
        config = ConfigManager.from_dict({})

        class ComponentB(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option("foo", parser=int, default="2")
            required_config.add_option("bar", parser=int, default="1")

            def __init__(self, config):
                self.config = config.with_options(self)

        class ComponentA(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option("baz", default="abc")

            def __init__(self, config):
                self.config = config.with_options(self)
                self.comp = ComponentB(config.with_namespace("biff"))

            def get_runtime_config(self, namespace=None):
                for item in super(ComponentA,
                                  self).get_runtime_config(namespace):
                    yield item

                # We specify the namespace here
                for item in self.comp.get_runtime_config(["biff"]):
                    yield item

        comp = ComponentA(config)

        assert list(comp.get_runtime_config()) == [
            ([], "baz", "abc", Option(key="baz", default="abc")),
            (["biff"], "foo", "2", Option(key="foo", parser=int, default="2")),
            (["biff"], "bar", "1", Option(key="bar", parser=int, default="1")),
        ]
Exemplo n.º 3
0
    def test_tree_inferred_namespace(self):
        """Test get_runtime_config can pull namespace from config."""
        config = ConfigManager.from_dict({})

        class ComponentB(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option("foo", parser=int, default="2")
            required_config.add_option("bar", parser=int, default="1")

            def __init__(self, config):
                self.config = config.with_options(self)

        class ComponentA(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option("baz", default="abc")

            def __init__(self, config):
                self.config = config.with_options(self)
                self.comp = ComponentB(config.with_namespace("boff"))

            def get_runtime_config(self, namespace=None):
                yield from super().get_runtime_config(namespace)

                # Namespace here is inferred from self.comp.config which is a
                # NamespacedConfig.
                yield from self.comp.get_runtime_config()

        comp = ComponentA(config)

        assert list(comp.get_runtime_config()) == [
            ([], "baz", "abc", Option(key="baz", default="abc")),
            (["boff"], "foo", "2", Option(key="foo", parser=int, default="2")),
            (["boff"], "bar", "1", Option(key="bar", parser=int, default="1")),
        ]
Exemplo n.º 4
0
    def test_bound_config(self):
        config = ConfigManager.from_dict({'foo': 12345})

        class ComponentA(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option('foo', parser=int)
            required_config.add_option('bar', parser=int, default='1')

            def __init__(self, config):
                self.config = config.with_options(self)

        comp = ComponentA(config)
        assert (list(comp.get_runtime_config()) == [
            ([], 'foo', '12345', Option(key='foo', parser=int)),
            ([], 'bar', '1', Option(key='bar', parser=int, default='1')),
        ])
Exemplo n.º 5
0
    def test_bound_config(self):
        config = ConfigManager.from_dict({"foo": 12345})

        class ComponentA(RequiredConfigMixin):
            required_config = ConfigOptions()
            required_config.add_option("foo", parser=int)
            required_config.add_option("bar", parser=int, default="1")

            def __init__(self, config):
                self.config = config.with_options(self)

        comp = ComponentA(config)
        assert list(comp.get_runtime_config()) == [
            ([], "foo", "12345", Option(key="foo", parser=int)),
            ([], "bar", "1", Option(key="bar", parser=int, default="1")),
        ]