def test_load_sources_setting(config, tmpdir): json1 = tmpdir.join('config1.json').strpath json2 = tmpdir.join('config2.json').strpath json3 = tmpdir.join('config3.json').strpath config.uploads.db.settings.load_sources.append(json1) config.settings.load_sources.append(json2) # None of the files exist, shouldn't fail config.load() assert config.dump_values(with_defaults=False) == {} with open(json1, 'w') as f: json.dump({'user': '******', 'password': '******'}, f) config.load() assert config.dump_values(with_defaults=False) == { 'uploads': {'db': {'user': '******', 'password': '******'}} } assert config.uploads.enabled.value is False assert config.uploads.db.user.value == 'Administrator' with open(json2, 'w') as f: json.dump({'uploads': {'db': {'user': '******'}, 'enabled': True}}, f) config.load() assert config.uploads.enabled.value is True assert config.uploads.db.user.value == 'admin' # should override "Administrator" assert config.uploads.db.password.value == 'SECRET' with open(json3, 'w') as f: json.dump({'main': {'greeting': 'Hey!'}}, f) wrapper = Config({ 'main': config }) wrapper.settings.load_sources.append(json3) wrapper.load() assert wrapper.main.uploads.db.user.value == 'admin' assert wrapper.main.uploads.db.password.value == 'SECRET' assert wrapper.main.greeting.value == 'Hey!'
def test_config_with_app_name(tmpdir): config_path = tmpdir.mkdir('test_config_with_app_name').join( 'config.json').strpath with open(config_path, 'w') as f: json.dump({'uploads': {'enabled': True}}, f) schema = { 'uploads': { 'enabled': False, 'threads': 1, 'db': { 'user': '******', 'password': '******', } } } # Auto-load enabled config1 = Config(schema, app_name='test_config_with_app_name', user_config_root=tmpdir.strpath, auto_load=True) assert config1.uploads.threads.value == 1 assert config1.uploads.enabled.value is True assert not config1.uploads.enabled.is_default # Auto-load not enabled by default config2 = Config(schema, app_name='test_config_with_app_name', user_config_root=tmpdir.strpath) assert config2.uploads.enabled.value is False config2.load() assert config2.uploads.enabled.value is True