From 7b9c682e951fcd41c10fb633a929ab9ca8c311e5 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Fri, 28 Sep 2012 02:24:58 +0200 Subject: [PATCH] Make core.uri_schemes include URI schemes from all backends --- mopidy/core/actor.py | 5 ++++- tests/core/actor_test.py | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 tests/core/actor_test.py diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index ea360055..f5de038d 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -43,7 +43,10 @@ class Core(pykka.ThreadingActor, AudioListener): @property def uri_schemes(self): """List of URI schemes we can handle""" - return self._backends[0].uri_schemes.get() + futures = [backend.uri_schemes for backend in self._backends] + results = pykka.get_all(futures) + schemes = [uri_scheme for result in results for uri_scheme in result] + return sorted(schemes) def reached_end_of_stream(self): self.playback.on_end_of_track() diff --git a/tests/core/actor_test.py b/tests/core/actor_test.py new file mode 100644 index 00000000..95639cf8 --- /dev/null +++ b/tests/core/actor_test.py @@ -0,0 +1,26 @@ +import mock +import pykka + +from mopidy.core import Core + +from tests import unittest + + +class CoreActorTest(unittest.TestCase): + def setUp(self): + self.backend1 = mock.Mock() + self.backend1.uri_schemes.get.return_value = ['dummy1'] + + self.backend2 = mock.Mock() + self.backend2.uri_schemes.get.return_value = ['dummy2'] + + self.core = Core(audio=None, backends=[self.backend1, self.backend2]) + + def tearDown(self): + pykka.ActorRegistry.stop_all() + + def test_uri_schemes_has_uris_from_all_backends(self): + result = self.core.uri_schemes + + self.assertIn('dummy1', result) + self.assertIn('dummy2', result)