Merge pull request #1231 from stein-k/missing_config

Fixes #1228
This commit is contained in:
Stein Magnus Jodal 2015-07-25 14:23:54 +02:00
commit bd13dcdcdd
3 changed files with 31 additions and 8 deletions

View File

@ -166,7 +166,7 @@ def main():
raise
def create_file_structures_and_config(args, extensions):
def create_file_structures_and_config(args, extensions_data):
path.get_or_create_dir(b'$XDG_DATA_DIR/mopidy')
path.get_or_create_dir(b'$XDG_CONFIG_DIR/mopidy')
@ -176,7 +176,7 @@ def create_file_structures_and_config(args, extensions):
return
try:
default = config_lib.format_initial(extensions)
default = config_lib.format_initial(extensions_data)
path.get_or_create_file(config_file, mkdir=False, content=default)
logger.info('Initialized %s with default config', config_file)
except IOError as error:

View File

@ -87,20 +87,23 @@ def format(config, ext_schemas, comments=None, display=True):
return _format(config, comments or {}, schemas, display, False)
def format_initial(extensions):
def format_initial(extensions_data):
config_dir = os.path.dirname(__file__)
defaults = [read(os.path.join(config_dir, 'default.conf'))]
defaults.extend(e.get_default_config() for e in extensions)
defaults.extend(d.extension.get_default_config() for d in extensions_data)
raw_config = _load([], defaults, [])
schemas = _schemas[:]
schemas.extend(e.get_config_schema() for e in extensions)
schemas.extend(d.extension.get_config_schema() for d in extensions_data)
config, errors = _validate(raw_config, schemas)
versions = ['Mopidy %s' % versioning.get_version()]
for extension in sorted(extensions, key=lambda ext: ext.dist_name):
versions.append('%s %s' % (extension.dist_name, extension.version))
extensions_data = sorted(
extensions_data, key=lambda d: d.extension.dist_name)
for data in extensions_data:
versions.append('%s %s' % (
data.extension.dist_name, data.extension.version))
header = _INITIAL_HELP.strip() % {'versions': '\n# '.join(versions)}
formatted_config = _format(

View File

@ -6,7 +6,7 @@ import unittest
import mock
from mopidy import config
from mopidy import config, ext
from tests import path_to_data_dir
@ -292,3 +292,23 @@ class PostProcessorTest(unittest.TestCase):
def test_conversion(self):
result = config._postprocess(PROCESSED_CONFIG)
self.assertEqual(result, INPUT_CONFIG)
def test_format_initial():
extension = ext.Extension()
extension.ext_name = 'foo'
extension.get_default_config = lambda: None
extensions_data = [
ext.ExtensionData(
extension=extension,
entry_point=None,
config_schema=None,
config_defaults=None,
command=None,
),
]
result = config.format_initial(extensions_data)
assert '# For further information' in result
assert '[foo]\n' in result