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)