From 094a874055aba9ccb6da2ea9f9d96c54e8cf371b Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 1 Jan 2016 23:42:32 +0100 Subject: [PATCH 1/2] core: Make lookup() ignore tracks without URI Fixes #1340 --- docs/changelog.rst | 3 +++ mopidy/core/library.py | 2 +- tests/core/test_library.py | 13 +++++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index bea003f5..a7404cc4 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -29,6 +29,9 @@ Bug fix release. - MPD: Don't return tracks with empty URIs. (Partly fixes: :issue:`1340`, PR: :issue:`1343`) +- Core: Make :meth:`~mopidy.core.LibraryController.lookup` ignore tracks with + empty URIs. (Partly fixes: :issue:`1340`, PR: :issue:`1381`) + v1.1.1 (2015-09-14) =================== diff --git a/mopidy/core/library.py b/mopidy/core/library.py index ce420812..2a4ee87d 100644 --- a/mopidy/core/library.py +++ b/mopidy/core/library.py @@ -236,7 +236,7 @@ class LibraryController(object): result = future.get() if result is not None: validation.check_instances(result, models.Track) - results[u] = result + results[u] = [r for r in result if r.uri] if uri: return results[uri] diff --git a/tests/core/test_library.py b/tests/core/test_library.py index 92b22bfb..750f371f 100644 --- a/tests/core/test_library.py +++ b/tests/core/test_library.py @@ -153,8 +153,8 @@ class CoreLibraryTest(BaseCoreLibraryTest): self.core.library.lookup('dummy1:a', ['dummy2:a']) def test_lookup_can_handle_uris(self): - track1 = Track(name='abc') - track2 = Track(name='def') + track1 = Track(uri='dummy1:a', name='abc') + track2 = Track(uri='dummy2:a', name='def') self.library1.lookup().get.return_value = [track1] self.library2.lookup().get.return_value = [track2] @@ -169,6 +169,15 @@ class CoreLibraryTest(BaseCoreLibraryTest): self.assertFalse(self.library1.lookup.called) self.assertFalse(self.library2.lookup.called) + def test_lookup_ignores_tracks_without_uri_set(self): + track1 = Track(uri='dummy1:a', name='abc') + track2 = Track() + + self.library1.lookup().get.return_value = [track1, track2] + + result = self.core.library.lookup(uris=['dummy1:a']) + self.assertEqual(result, {'dummy1:a': [track1]}) + def test_refresh_with_uri_selects_dummy1_backend(self): self.core.library.refresh('dummy1:a') From 75656b9b3dbc4307f2e09687bf60a16636a3e17f Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 3 Jan 2016 21:07:10 +0100 Subject: [PATCH 2/2] core: Address review comments --- mopidy/core/library.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mopidy/core/library.py b/mopidy/core/library.py index 2a4ee87d..240de619 100644 --- a/mopidy/core/library.py +++ b/mopidy/core/library.py @@ -236,6 +236,8 @@ class LibraryController(object): result = future.get() if result is not None: validation.check_instances(result, models.Track) + # TODO Consider making Track.uri field mandatory, and + # then remove this filtering of tracks without URIs. results[u] = [r for r in result if r.uri] if uri: