From 1c5b07a37451e9835b4a129756669f82ca2f39a3 Mon Sep 17 00:00:00 2001 From: Thomas Kemmer Date: Fri, 24 Oct 2014 12:47:58 +0200 Subject: [PATCH 1/2] Make everything that is not a Track browseable --- mopidy/mpd/dispatcher.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/mopidy/mpd/dispatcher.py b/mopidy/mpd/dispatcher.py index 9c2f3471..c947c13d 100644 --- a/mopidy/mpd/dispatcher.py +++ b/mopidy/mpd/dispatcher.py @@ -299,8 +299,7 @@ class MpdContext(object): uri = None for part in path_parts: for ref in self.core.library.browse(uri).get(): - if (ref.type in (ref.DIRECTORY, ref.ALBUM, ref.PLAYLIST) - and ref.name == part): + if ref.type != ref.TRACK and ref.name == part: uri = ref.uri break else: @@ -320,13 +319,13 @@ class MpdContext(object): path = '/'.join([base_path, ref.name.replace('/', '')]) path = self.insert_name_uri_mapping(path, ref.uri) - if ref.type in (ref.DIRECTORY, ref.ALBUM, ref.PLAYLIST): - yield (path, None) - if recursive: - path_and_futures.append( - (path, self.core.library.browse(ref.uri))) - elif ref.type == ref.TRACK: + if ref.type == ref.TRACK: if lookup: yield (path, self.core.library.lookup(ref.uri)) else: yield (path, ref) + else: + yield (path, None) + if recursive: + path_and_futures.append( + (path, self.core.library.browse(ref.uri))) From 63277c4db3c9348e1db50e5e1971ee88311b74b6 Mon Sep 17 00:00:00 2001 From: Thomas Kemmer Date: Tue, 4 Nov 2014 19:22:45 +0100 Subject: [PATCH 2/2] Add unit tests for artist browsing --- tests/mpd/protocol/test_music_db.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/mpd/protocol/test_music_db.py b/tests/mpd/protocol/test_music_db.py index e6712fef..ff39c081 100644 --- a/tests/mpd/protocol/test_music_db.py +++ b/tests/mpd/protocol/test_music_db.py @@ -139,6 +139,7 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): 'dummy:/': [Ref.track(uri='dummy:/a', name='a'), Ref.directory(uri='dummy:/foo', name='foo'), Ref.album(uri='dummy:/album', name='album'), + Ref.artist(uri='dummy:/artist', name='artist'), Ref.playlist(uri='dummy:/pl', name='pl')], 'dummy:/foo': [Ref.track(uri='dummy:/foo/b', name='b')]} @@ -147,6 +148,7 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): self.assertInResponse('file: dummy:/a') self.assertInResponse('directory: /dummy/foo') self.assertInResponse('directory: /dummy/album') + self.assertInResponse('directory: /dummy/artist') self.assertInResponse('directory: /dummy/pl') self.assertInResponse('file: dummy:/foo/b') self.assertInResponse('OK') @@ -207,6 +209,7 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): 'dummy:/': [Ref.track(uri='dummy:/a', name='a'), Ref.directory(uri='dummy:/foo', name='foo'), Ref.album(uri='dummy:/album', name='album'), + Ref.artist(uri='dummy:/artist', name='artist'), Ref.playlist(uri='dummy:/pl', name='pl')], 'dummy:/foo': [Ref.track(uri='dummy:/foo/b', name='b')]} @@ -216,6 +219,7 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): self.assertInResponse('Title: a') self.assertInResponse('directory: /dummy/foo') self.assertInResponse('directory: /dummy/album') + self.assertInResponse('directory: /dummy/artist') self.assertInResponse('directory: /dummy/pl') self.assertInResponse('file: dummy:/foo/b') self.assertInResponse('Title: b')