Esempio n. 1
0
def test_expanduser_config_cake_processing(sample_configs):
    # We don't want to write in the test-running-user's home directory
    # so we just check that the expansion has happened.
    home_dir = path.expanduser('~')
    with pytest.raises(ConfigFileNotFoundError) as e:
        load_cake(sample_configs, 'Expanduser Nonexistant File')
    assert home_dir in str(e.value)
Esempio n. 2
0
def test_custom_config_parser(sample_configs):
    '''Test that we can pass in our own config parser'''
    arbitrary_cake_name = 'L1'

    # Make sure we are able to load this cake normally first (test self-check)
    load_cake(sample_configs, arbitrary_cake_name)

    # We are not testing ConfigParser itself, just that load_cake will use
    # the object we give it, so we give it something simple that we know
    # will break; we don't care exactly how it breaks, just that it does.
    with pytest.raises(Exception):
        load_cake(sample_configs, arbitrary_cake_name, into_config=object())
Esempio n. 3
0
def test_env_var_can_define_new_section(sample_configs, monkeypatch):
    new_section = str(uuid4())
    new_key = str(uuid4())

    # First test that the section does not exist:
    with pytest.raises(NoSectionError):
        config = load_cake(sample_configs, 'L1')
        config.get(new_section, new_key)

    new_value = 'from environment creation'
    env_var_name = 'CONFIG+{}+{}'.format(new_section, new_key)
    monkeypatch.setenv(env_var_name, new_value)
    # Now check that it was created:
    config = load_cake(sample_configs, 'L1')
    assert config.get(new_section, new_key) == new_value
Esempio n. 4
0
def test_config_ordering(sample_configs, config_name):
    '''Test that config_cake loaded the config files in the expected order'''

    config = load_cake(sample_configs, config_name)

    key1 = 'layer2' if 'L2' in config_name else 'basic'
    target = 'key1 from {} configuration'.format(key1)
    assert target == config.get('Foundation', 'key1')

    new_key = 'layer2' if 'L2' in config_name else 'layer1'
    target = 'new key from {} configuration'.format(new_key)
    assert target == config.get('New Stuff', 'new key')
Esempio n. 5
0
def test_irrelevant_master_config_sections_are_not_in_config(sample_configs, cake_name):
    config = load_cake(sample_configs, cake_name)
    for cake_name in VALID_CAKE_NAMES:
        assert not config.has_section(cake_name)
Esempio n. 6
0
def test_load_cake_includes_master_cake_keys_from_cake_section(sample_configs, config_name):
    config = load_cake(sample_configs, config_name)
    assert config_name in config.defaults()['name']
Esempio n. 7
0
def test_munchifier(sample_configs):
    '''Test conversion from config parser to munch.'''
    # Munch has it's own tests, we're just spot checking our conversion function.
    config_by_dots = munchify_config(load_cake(sample_configs, 'L1'))
    assert config_by_dots.Foundation.key1 == 'key1 from basic configuration'
    assert config_by_dots.DEFAULT.key == 'with default section value'
Esempio n. 8
0
def test_broken_config(sample_configs):
    '''Make sure we get the expected error when a cake references a non-existant file.'''
    with pytest.raises(ConfigFileNotFoundError):
        load_cake(sample_configs, 'Nonexistant File')
Esempio n. 9
0
def test_env_var_override_section_can_be_defined_in_a_layer(sample_configs, monkeypatch):
    master = path.join(path.dirname(sample_configs), 'master_without_env_override_section.config')
    new_value = 'key1 from environment override'
    monkeypatch.setenv('FROM_LAYER~section_1~key1', new_value)
    config = load_cake(master, 'L3')
    assert config.get('section_1', 'key1') == new_value
Esempio n. 10
0
def test_env_var_can_override_config_value(sample_configs, monkeypatch):
    new_value = 'key1 from environment override'
    monkeypatch.setenv('CONFIG+Foundation+key1', new_value)
    config = load_cake(sample_configs, 'L1')
    assert config.get('Foundation', 'key1') == new_value
Esempio n. 11
0
def test_load_config_relative_filenames(sample_configs, config_name):
    # This is so simple because sample_configs is already creating the configs
    # in a temporary directory, not the current working directory.
    config = load_cake(sample_configs, config_name)
    assert config is not None
    assert config.sections(), 'Config data should have been loaded'
Esempio n. 12
0
def test_fail_to_load_non_existant_config(sample_configs):
    with pytest.raises(NoSectionError):
        load_cake(sample_configs, str(uuid4()))