core: Protect against old clients that implement backend.play
This commit is contained in:
parent
5eebab6e18
commit
a74bc24bdc
@ -312,8 +312,13 @@ class PlaybackController(object):
|
|||||||
|
|
||||||
if backend:
|
if backend:
|
||||||
backend.playback.prepare_change()
|
backend.playback.prepare_change()
|
||||||
success = (backend.playback.change_track(tl_track.track).get() and
|
try:
|
||||||
backend.playback.play().get())
|
success = (
|
||||||
|
backend.playback.change_track(tl_track.track).get() and
|
||||||
|
backend.playback.play().get())
|
||||||
|
except TypeError:
|
||||||
|
logger.error('%s needs to be updated to work with this '
|
||||||
|
'version of Mopidy.', backend)
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
self.core.tracklist._mark_playing(tl_track)
|
self.core.tracklist._mark_playing(tl_track)
|
||||||
|
|||||||
@ -650,3 +650,15 @@ class TestStream(unittest.TestCase):
|
|||||||
|
|
||||||
self.replay_audio_events()
|
self.replay_audio_events()
|
||||||
self.assertEqual(self.playback.get_stream_title(), None)
|
self.assertEqual(self.playback.get_stream_title(), None)
|
||||||
|
|
||||||
|
|
||||||
|
class CorePlaybackWithOldBackendTest(unittest.TestCase):
|
||||||
|
def test_type_error_from_old_backend_does_not_crash_core(self):
|
||||||
|
b = mock.Mock()
|
||||||
|
b.uri_schemes.get.return_value = ['dummy1']
|
||||||
|
b.playback = mock.Mock(spec=backend.PlaybackProvider)
|
||||||
|
b.playback.play.side_effect = TypeError
|
||||||
|
|
||||||
|
c = core.Core(mixer=None, backends=[b])
|
||||||
|
c.tracklist.add([Track(uri='dummy1:a', length=40000)])
|
||||||
|
c.playback.play() # No TypeError == test passed.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user