From 4a79b559d547f0602d632c8bd4b2f1b2344d485b Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Mon, 29 Oct 2012 10:31:35 +0100 Subject: [PATCH] Fail if two backends claims to handle the same URI schema --- mopidy/core/actor.py | 3 +++ tests/core/actor_test.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index e2eeb746..7fdaeb71 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -62,4 +62,7 @@ class Backends(list): for backend in backends: uri_schemes = backend.uri_schemes.get() for uri_scheme in uri_schemes: + assert uri_scheme not in self.by_uri_scheme, ( + 'URI scheme %s is already handled by %s' + % (uri_scheme, backend.__class__.__name__)) self.by_uri_scheme[uri_scheme] = backend diff --git a/tests/core/actor_test.py b/tests/core/actor_test.py index 95639cf8..9feddbd0 100644 --- a/tests/core/actor_test.py +++ b/tests/core/actor_test.py @@ -24,3 +24,9 @@ class CoreActorTest(unittest.TestCase): self.assertIn('dummy1', result) self.assertIn('dummy2', result) + + def test_backends_with_colliding_uri_schemes_fails(self): + self.backend2.uri_schemes.get.return_value = ['dummy1', 'dummy2'] + self.assertRaisesRegexp( + AssertionError, 'URI scheme dummy1 is already handled by Mock', + Core, audio=None, backends=[self.backend1, self.backend2])