示例#1
0
def test_config_all():
    config = Config(
        {
            'url': 'default-url',
            'nested': {
                'default-key': 'default-nested'
            },
            'cli': {
                'url': 'cli-url',
                'nested': {
                    'cli-key': 'cli-nested'
                },
            },
        },
        sections={'cli', 'app'},
        merge_keys={
            'nested',
        },
    )

    config.all['url'] = 'new-url'
    assert config.data == {
        'default': {
            'url': 'new-url',
            'nested': {
                'default-key': 'default-nested'
            },
        },
        'cli': {
            'url': 'new-url',
            'nested': {
                'cli-key': 'cli-nested'
            },
        },
        'app': {
            'url': 'new-url',
        },
    }

    config.all['nested'] = {'new-key': 'new-value'}
    assert config.data == dict.fromkeys(
        ('default', 'cli', 'app'),
        {
            'url': 'new-url',
            'nested': {
                'new-key': 'new-value'
            },
        },
    )
示例#2
0
def test_config_merged_recursive():
    config = Config(
        {
            'reader': {'plugins': {'default-reader-plugin': None}},
            'plugins': {'default-plugin': None},
            'app': {
                'reader': {'plugins': {'app-reader-plugin': None}},
                'plugins': {'app-plugin': None},
            },
        },
        sections={
            'app',
        },
        merge_keys={'reader', 'plugins'},
    )
    assert config.merged('app') == {
        'reader': {
            'plugins': {'default-reader-plugin': None, 'app-reader-plugin': None}
        },
        'plugins': {'default-plugin': None, 'app-plugin': None},
    }
示例#3
0
def test_config_merged():
    config = Config(
        {
            'url': 'default-url',
            'plugins': {
                'default-plugin': None,
                'another-plugin': 1
            },
            'cli': {
                'url': 'cli-url'
            },
            'app': {
                'plugins': {
                    'app-plugin': None,
                    'another-plugin': 2
                }
            },
        },
        sections={'cli', 'app'},
        merge_keys={
            'plugins',
        },
    )

    assert config.merged('cli') == {
        'url': 'cli-url',
        'plugins': {
            'default-plugin': None,
            'another-plugin': 1
        },
    }

    assert config.merged('app') == {
        'url': 'default-url',
        'plugins': {
            'default-plugin': None,
            'another-plugin': 2,
            'app-plugin': None
        },
    }
示例#4
0
def test_config_init_error():
    with pytest.raises(ValueError):
        Config({'default': {'reader': {}}, 'reader': {}})
示例#5
0
import pytest

from reader._config import Config

CONFIG_INIT_DATA = [
    (Config({}), {
        'default': {}
    }),
    (Config({}, sections={'cli', 'app'}), {
        'default': {},
        'cli': {},
        'app': {}
    }),
    (
        Config({'reader': {
            'k': 'v'
        }}, sections={'cli', 'app'}),
        {
            'default': {
                'reader': {
                    'k': 'v'
                }
            },
            'cli': {},
            'app': {}
        },
    ),
    (
        Config({'default': {
            'reader': {
                'k': 'v'