1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
import os
import plaster
import pytest
here = os.path.dirname(__file__)
test_settings_relpath = 'sample_configs/test_settings.ini'
test_settings_path = os.path.abspath(os.path.join(here, test_settings_relpath))
class TestSimpleUri(object):
config_uri = test_settings_path
@pytest.fixture(autouse=True)
def loader(self, fake_packages):
self.loader = plaster.get_loader(self.config_uri)
def test_sections(self):
result = self.loader.get_sections()
assert set(result) == {'section1', 'section2'}
def test_missing_section(self):
result = self.loader.get_settings('missing', {'a': 'b'})
assert result == {}
def test_no_defaults_passed(self):
result = self.loader.get_settings('section1')
assert list(result.items()) == [
('a', 'a_val'),
('c', 'override_b'),
('b', 'default_b'),
]
assert result.global_conf['default_a'] == 'default_a'
assert result.global_conf['default_b'] == 'override_b'
assert result.loader == self.loader
with pytest.raises(Exception):
self.loader.get_settings('section2')
def test_defaults_passed(self):
defaults = {'default_c': 'default_c'}
result = self.loader.get_settings('section1', defaults=defaults)
assert result['a'] == 'a_val'
assert result['b'] == 'default_b'
assert 'default_c' not in result
assert result.global_conf['default_a'] == 'default_a'
assert result.global_conf['default_b'] == 'override_b'
assert result.global_conf['default_c'] == 'default_c'
result = self.loader.get_settings('section2', defaults=defaults)
assert result['a'] == 'a_val'
assert result['b'] == 'b_val'
assert result['c'] == 'default_c'
assert result.global_conf['default_a'] == 'default_a'
assert result.global_conf['default_b'] == 'default_b'
assert result.global_conf['default_c'] == 'default_c'
class TestSectionedURI(TestSimpleUri):
config_uri = test_settings_path + '#section1'
def test_no_section_name_passed(self):
result = self.loader.get_settings()
assert result['a'] == 'a_val'
assert result['b'] == 'default_b'
assert result['c'] == 'override_b'
assert 'default_b' not in result
class TestFullURI(TestSectionedURI):
config_uri = 'pastedeploy+ini:' + test_settings_path + '#section1'
class TestEggURI(object):
config_uri = 'pastedeploy+egg:FakeApp#basic_app'
@pytest.fixture(autouse=True)
def loader(self, fake_packages):
self.loader = plaster.get_loader(self.config_uri)
def test_sections(self):
result = self.loader.get_sections()
assert result == []
def test_settings(self):
result = self.loader.get_settings()
assert result == {}
def test_named_settings(self):
result = self.loader.get_settings('missing')
assert result == {}
|