Esempio n. 1
0
def test_cli_shadows_env(mocked_configs_path):
    config_load = config.ConfigLoad()
    parser = _args_to_parser([('--arg', {'default': 'default_cli'})])
    config_load = config.ConfigLoad()
    parser.set_defaults(**config_load.get_section('lago'))
    config_load.update_parser(parser)

    assert config_load['arg'] == 'env'
    config_load.update_args(parser.parse_args(['--arg', 'cli']))
    assert config_load['arg'] == 'cli'
Esempio n. 2
0
def test_all_sources_root_section(mocked_configs_path, mocked_open):
    file1 = {'lago': {'arg1': 'file1', 'arg2': 'file1', 'arg3': 'file1'}}
    file2 = {'lago': {'arg1': 'file2', 'arg2': 'file2'}}
    parser = _args_to_parser([('--arg1', {
        'default': 'parser'
    }), ('--arg2', {
        'default': 'parser'
    }), ('--arg3', {
        'default': 'parser'
    })])
    args = ['--arg2', 'cli']
    mocked_open.side_effect = [
        _dict_to_handler(file1),
        _dict_to_handler(file2)
    ]
    config_load = config.ConfigLoad()
    parser.set_defaults(**config_load.get_section('lago'))
    config_load.update_parser(parser)
    config_load.update_args(parser.parse_args(args))

    assert mocked_open.call_args_list == [
        call('file1', 'r'), call('file2', 'r')
    ]
    assert config_load.get_section('lago') == {
        'arg1': 'env',
        'arg2': 'cli',
        'arg3': 'file1'
    }
Esempio n. 3
0
def test_update_root_parser(mocked_configs_path):
    parser = _args_to_parser([('--arg', {'default': 'arg_default'})])
    config_load = config.ConfigLoad()
    config_load.update_parser(parser)

    assert config_load['arg'] == 'arg_default'
    assert config_load.get('arg') == 'arg_default'
    assert config_load.get_section('lago')['arg'] == 'arg_default'
Esempio n. 4
0
def test_env_shadows_file(mocked_configs_path, mocked_open):
    file1 = {'lago': {'env': 'from_file'}}
    mocked_open.side_effect = [_dict_to_handler(file1)]
    config_load = config.ConfigLoad()

    assert mocked_configs_path.call_count == 1
    assert mocked_open.call_args_list == [call('file1', 'r')]
    assert config_load.get_section('lago') == {'env': 'from_env'}
Esempio n. 5
0
def test_args_loaded_from_file(mocked_configs_path, mocked_open):
    file1 = {'lago': {'arg0': 'val0'}, 'dummy': {'arg1': 'val1'}}
    mocked_open.side_effect = [_dict_to_handler(file1)]
    config_load = config.ConfigLoad()

    assert mocked_configs_path.call_count == 1
    assert mocked_open.call_args_list == [call('file1', 'r')]
    assert config_load.get_section('dummy') == {'arg1': 'val1'}
    assert config_load.get_section('lago') == {'arg0': 'val0'}
Esempio n. 6
0
def test_key_only_in_file_exists(mocked_configs_path, mocked_open):
    file1 = {'custom_section': {'custom': 'custom'}}
    parser = _args_to_parser([('--arg1', {'default': 'parser'})])
    args = ['--arg1', 'cli']
    mocked_open.side_effect = [_dict_to_handler(file1)]
    config_load = config.ConfigLoad()
    parser.set_defaults(**config_load.get_section('lago', {}))
    config_load.update_parser(parser)
    config_load.update_args(parser.parse_args(args))

    assert mocked_open.call_args_list == [call('file1', 'r')]
    assert config_load.get_section('custom_section') == {'custom': 'custom'}
Esempio n. 7
0
def test_file_shadows_cli_default(mocked_configs_path, mocked_open):
    file1 = {'lago': {'arg': 'arg_file'}}
    mocked_open.side_effect = [_dict_to_handler(file1), ]
    parser = _args_to_parser([('--arg', {'default': 'arg_default'})])
    config_load = config.ConfigLoad()
    # although awkard looking - this mimics the round-trip in the code
    # look in cmd.py:create_parser
    parser.set_defaults(**config_load.get_section('lago'))
    config_load.update_parser(parser)

    assert mocked_configs_path.call_count == 1
    assert mocked_open.call_args_list == [call('file1', 'r')]
    assert config_load['arg'] == 'arg_file'
Esempio n. 8
0
def test_get_ini_include_unset():
    defaults = {'lago': {'var1': 'val1'}}

    config_load = config.ConfigLoad(defaults=defaults)
    parser = _args_to_parser([('--var1', {}), ('--var2', {})])
    config_load.update_parser(parser)
    assert config_load['var1'] == 'val1'
    config_load.update_args(parser.parse_args(['--var1', 'new']))
    assert config_load['var1'] == 'new'
    ini = config_load.get_ini(incl_unset=True)

    configp = configparser.ConfigParser()
    configp.read_string(ini)
    assert configp.get('lago', 'var1') == 'new'
    assert '#var2 = None' in ini
Esempio n. 9
0
def test_last_file_overrides(mocked_configs_path, mocked_open):
    file1 = {'section': {'var1': 'file1'}}
    file2 = {'section': {'var1': 'file2'}}

    mocked_open.side_effect = [
        _dict_to_handler(file1), _dict_to_handler(file2)
    ]
    config_load = config.ConfigLoad()

    assert mocked_configs_path.call_count == 1
    assert mocked_open.call_args_list == [
        call('file1', 'r'),
        call('file2', 'r'),
    ]
    assert config_load.get_section('section') == {'var1': 'file2'}
Esempio n. 10
0
def test_default_dict_empty():
    config_load = config.ConfigLoad(root_section='section')
    assert config_load.get_section('section') is None
Esempio n. 11
0
def test_get_ini(defaults):
    config_load = config.ConfigLoad(defaults=defaults)
    expected = _ini_from_dict(defaults)
    assert config_load.get_ini() == expected
Esempio n. 12
0
def test_default_dict_loading(defaults):
    config_load = config.ConfigLoad(defaults=defaults)
    for key, value in defaults.iteritems():
        assert config_load.get_section(key) == value
Esempio n. 13
0
def test_get_ini(defaults):
    with patch('lago.config._get_configs_path', return_value=[]):
        config_load = config.ConfigLoad(defaults=defaults)
        expected = _ini_from_dict(defaults)
        assert config_load.get_ini() == expected
Esempio n. 14
0
def test_default_dict_loading(defaults):
    with patch('lago.config._get_configs_path', return_value=[]):
        config_load = config.ConfigLoad(defaults=defaults)
        for key, value in six.iteritems(defaults):
            assert config_load.get_section(key) == value