From 0d3563441f5d92731468f87818acbda7f3df3df6 Mon Sep 17 00:00:00 2001 From: Stein Karlsen Date: Sat, 25 Jul 2015 03:43:35 +0200 Subject: [PATCH 1/7] Fixed changed data-structure passed when creating config file, issue 1228 --- mopidy/__main__.py | 4 ++-- mopidy/config/__init__.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 245a03ce..ee359268 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -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: diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index 13a26412..0de264f2 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -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( From 448e929e75741bdfaa91761053eb47afe15c9117 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 25 Jul 2015 11:59:29 +0200 Subject: [PATCH 2/7] file: Add todos for missing tests --- tests/file/test_browse.py | 2 ++ tests/file/test_lookup.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/file/test_browse.py b/tests/file/test_browse.py index baffc488..81021966 100644 --- a/tests/file/test_browse.py +++ b/tests/file/test_browse.py @@ -1 +1,3 @@ from __future__ import unicode_literals + +# TODO Test browse() diff --git a/tests/file/test_lookup.py b/tests/file/test_lookup.py index baffc488..19c07181 100644 --- a/tests/file/test_lookup.py +++ b/tests/file/test_lookup.py @@ -1 +1,3 @@ from __future__ import unicode_literals + +# TODO Test lookup() From ad2646f1ab2134b40df5ff87a8ce2034b4cea750 Mon Sep 17 00:00:00 2001 From: EricJahn Date: Sat, 25 Jul 2015 13:15:37 +0200 Subject: [PATCH 3/7] tests: Fix failing encoding test Encoding is different on Mac OS and needs to be checked separately. --- tests/m3u/test_playlists.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/m3u/test_playlists.py b/tests/m3u/test_playlists.py index f490887a..edebe65b 100644 --- a/tests/m3u/test_playlists.py +++ b/tests/m3u/test_playlists.py @@ -3,6 +3,7 @@ from __future__ import absolute_import, unicode_literals import os +import platform import shutil import tempfile import unittest @@ -156,8 +157,11 @@ class M3UPlaylistsProviderTest(unittest.TestCase): self.core.playlists.refresh() self.assertEqual(len(self.core.playlists.as_list()), 1) - result = self.core.playlists.lookup(uri) - self.assertEqual('\ufffd\ufffd\ufffd', result.name) + result = self.core.playlists.as_list() + if platform.system() == 'Darwin': + self.assertEqual('%F8%E6%E5', result[0].name) + else: + self.assertEqual('\ufffd\ufffd\ufffd', result[0].name) @unittest.SkipTest def test_playlists_dir_is_created(self): From 0ae6239988bef8fbe2250d9a68c0cf3aa1ee4c52 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 25 Jul 2015 11:48:54 +0200 Subject: [PATCH 4/7] config: Add regression test for format_initial() --- tests/config/test_config.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/config/test_config.py b/tests/config/test_config.py index 139f3a69..fa2285b8 100644 --- a/tests/config/test_config.py +++ b/tests/config/test_config.py @@ -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 From dd92a59e4c91c7b46fbd8933c7e1cff06b15eecf Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 25 Jul 2015 14:29:22 +0200 Subject: [PATCH 5/7] docs: Update .mailmap and authors --- .mailmap | 2 ++ AUTHORS | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.mailmap b/.mailmap index 718d8f4b..0682f673 100644 --- a/.mailmap +++ b/.mailmap @@ -24,4 +24,6 @@ Christopher Schirner John Cass Ronald Zielaznicki +Kyle Heyne Tom Roth +Eric Jahn diff --git a/AUTHORS b/AUTHORS index 258967c3..c2baca6c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -57,5 +57,8 @@ - Camilo Nova - Dražen Lučanin - Naglis Jonaitis +- Kyle Heyne - Tom Roth - Mark Greenwood +- Stein Karlsen +- Eric Jahn From 0bf67e296f2e6be27448c49665db2a16dc088340 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Thu, 23 Jul 2015 19:14:08 +0200 Subject: [PATCH 6/7] core: Log full backend exception --- mopidy/core/playback.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index f374127a..9a11066b 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -348,8 +348,11 @@ class PlaybackController(object): backend.playback.change_track(tl_track.track).get() and backend.playback.play().get()) except TypeError: - logger.error('%s needs to be updated to work with this ' - 'version of Mopidy.', backend) + logger.error( + '%s needs to be updated to work with this ' + 'version of Mopidy.', + backend.actor_ref.actor_class.__name__) + logger.debug('Backend exception', exc_info=True) if success: self.core.tracklist._mark_playing(tl_track) From a83d9836f9c00c4d95a8d51dfa7f4e1ab23338ce Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 25 Jul 2015 14:46:48 +0200 Subject: [PATCH 7/7] core: Update test mock --- tests/core/test_playback.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/core/test_playback.py b/tests/core/test_playback.py index 0e51c4db..5a8c9649 100644 --- a/tests/core/test_playback.py +++ b/tests/core/test_playback.py @@ -724,6 +724,7 @@ class CorePlaybackWithOldBackendTest(unittest.TestCase): } b = mock.Mock() + b.actor_ref.actor_class.__name__ = 'DummyBackend' b.uri_schemes.get.return_value = ['dummy1'] b.playback = mock.Mock(spec=backend.PlaybackProvider) b.playback.play.side_effect = TypeError