Merge branch 'issue/GH-17' into release/0.1.1
This commit is contained in:
commit
b8be963c94
@ -387,6 +387,9 @@ class BasePlaybackController(object):
|
|||||||
self.current_cp_track = cp_track
|
self.current_cp_track = cp_track
|
||||||
self.state = self.PLAYING
|
self.state = self.PLAYING
|
||||||
if not self._play(cp_track[1]):
|
if not self._play(cp_track[1]):
|
||||||
|
# Track is not playable
|
||||||
|
if self.random and self._shuffled:
|
||||||
|
self._shuffled.remove(cp_track)
|
||||||
if on_error_step == 1:
|
if on_error_step == 1:
|
||||||
self.next()
|
self.next()
|
||||||
elif on_error_step == -1:
|
elif on_error_step == -1:
|
||||||
|
|||||||
@ -44,16 +44,19 @@ class DummyLibraryController(BaseLibraryController):
|
|||||||
|
|
||||||
class DummyPlaybackController(BasePlaybackController):
|
class DummyPlaybackController(BasePlaybackController):
|
||||||
def _next(self, track):
|
def _next(self, track):
|
||||||
return True
|
"""Pass None as track to force failure"""
|
||||||
|
return track is not None
|
||||||
|
|
||||||
def _pause(self):
|
def _pause(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _play(self, track):
|
def _play(self, track):
|
||||||
return True
|
"""Pass None as track to force failure"""
|
||||||
|
return track is not None
|
||||||
|
|
||||||
def _previous(self, track):
|
def _previous(self, track):
|
||||||
return True
|
"""Pass None as track to force failure"""
|
||||||
|
return track is not None
|
||||||
|
|
||||||
def _resume(self):
|
def _resume(self):
|
||||||
return True
|
return True
|
||||||
|
|||||||
@ -6,6 +6,40 @@ from mopidy.frontends.mpd import dispatcher
|
|||||||
from mopidy.mixers.dummy import DummyMixer
|
from mopidy.mixers.dummy import DummyMixer
|
||||||
from mopidy.models import Track
|
from mopidy.models import Track
|
||||||
|
|
||||||
|
class IssueGH17RegressionTest(unittest.TestCase):
|
||||||
|
"""
|
||||||
|
The issue: http://github.com/jodal/mopidy/issues#issue/17
|
||||||
|
|
||||||
|
How to reproduce:
|
||||||
|
|
||||||
|
- Play a playlist where one track cannot be played
|
||||||
|
- Turn on random mode
|
||||||
|
- Press next until you get to the unplayable track
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.backend = DummyBackend(mixer_class=DummyMixer)
|
||||||
|
self.backend.current_playlist.append([
|
||||||
|
Track(uri='a'), Track(uri='b'), None,
|
||||||
|
Track(uri='d'), Track(uri='e'), Track(uri='f')])
|
||||||
|
self.mpd = dispatcher.MpdDispatcher(backend=self.backend)
|
||||||
|
|
||||||
|
def test(self):
|
||||||
|
random.seed(1) # Playlist order: abcfde
|
||||||
|
self.mpd.handle_request(u'play')
|
||||||
|
self.assertEquals('a', self.backend.playback.current_track.uri)
|
||||||
|
self.mpd.handle_request(u'random "1"')
|
||||||
|
self.mpd.handle_request(u'next')
|
||||||
|
self.assertEquals('b', self.backend.playback.current_track.uri)
|
||||||
|
self.mpd.handle_request(u'next')
|
||||||
|
# Should now be at track 'c', but playback fails and it skips ahead
|
||||||
|
self.assertEquals('f', self.backend.playback.current_track.uri)
|
||||||
|
self.mpd.handle_request(u'next')
|
||||||
|
self.assertEquals('d', self.backend.playback.current_track.uri)
|
||||||
|
self.mpd.handle_request(u'next')
|
||||||
|
self.assertEquals('e', self.backend.playback.current_track.uri)
|
||||||
|
|
||||||
|
|
||||||
class IssueGH18RegressionTest(unittest.TestCase):
|
class IssueGH18RegressionTest(unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
The issue: http://github.com/jodal/mopidy/issues#issue/18
|
The issue: http://github.com/jodal/mopidy/issues#issue/18
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user