From 21cf0f03370394c8a3e3e6746ba6ca4f459300a4 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Sat, 21 Jun 2014 14:03:05 +0200 Subject: [PATCH 1/2] mpd: List browse results before playlists in lsinfo This makes directories from extensions appear before playlists in the result of the lsinfo command, which is desirable in clients that does not sort the result. --- mopidy/mpd/protocol/music_db.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mopidy/mpd/protocol/music_db.py b/mopidy/mpd/protocol/music_db.py index 300f95e8..291d10cb 100644 --- a/mopidy/mpd/protocol/music_db.py +++ b/mopidy/mpd/protocol/music_db.py @@ -408,9 +408,6 @@ def lsinfo(context, uri=None): ""``, and ``lsinfo "/"``. """ result = [] - if uri in (None, '', '/'): - result.extend(protocol.stored_playlists.listplaylists(context)) - for path, lookup_future in context.browse(uri, recursive=False): if not lookup_future: result.append(('directory', path.lstrip('/'))) @@ -419,6 +416,9 @@ def lsinfo(context, uri=None): if tracks: result.extend(translator.track_to_mpd_format(tracks[0])) + if uri in (None, '', '/'): + result.extend(protocol.stored_playlists.listplaylists(context)) + if not result: raise exceptions.MpdNoExistError('Not found') return result From 81898cb7091ac09ab026e55cb8ccc39bb2e9ab86 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Sat, 21 Jun 2014 14:42:35 +0200 Subject: [PATCH 2/2] mpd: Test order of result from lsinfo --- tests/mpd/protocol/test_music_db.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/mpd/protocol/test_music_db.py b/tests/mpd/protocol/test_music_db.py index 608bbf62..e3bc9a46 100644 --- a/tests/mpd/protocol/test_music_db.py +++ b/tests/mpd/protocol/test_music_db.py @@ -340,6 +340,18 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): self.assertNotInResponse('directory: dummy') self.assertInResponse('OK') + def test_lsinfo_for_root_returns_browse_result_before_playlists(self): + last_modified = 1390942873222 + self.backend.library.dummy_browse_result = { + 'dummy:/': [Ref.track(uri='dummy:/a', name='a'), + Ref.directory(uri='dummy:/foo', name='foo')]} + self.backend.playlists.playlists = [ + Playlist(name='a', uri='dummy:/a', last_modified=last_modified)] + + response = self.sendRequest('lsinfo "/"') + self.assertLess(response.index('directory: dummy'), + response.index('playlist: a')) + def test_update_without_uri(self): self.sendRequest('update') self.assertInResponse('updating_db: 0')