alexjaw/fix/1512-inconsistent-playlist-state-with-repeat-and-consume

This commit is contained in:
Alexander Jaworowski 2016-08-21 21:40:17 +02:00
parent 92ddd888ee
commit bee9bd3d23
2 changed files with 24 additions and 1 deletions

View File

@ -325,7 +325,12 @@ class TracklistController(object):
next_index += 1
if self.get_repeat():
next_index %= len(self._tl_tracks)
# Fix for bug 1512
# Return None if consume mode and there is only one track (left) in the list
if self.get_consume() and len(self._tl_tracks) == 1:
return None
else:
next_index %= len(self._tl_tracks)
elif next_index >= len(self._tl_tracks):
return None

View File

@ -430,6 +430,24 @@ class TestConsumeHandling(BaseTest):
self.assertNotIn(tl_track, self.core.tracklist.get_tl_tracks())
def test_next_in_consume_and_repeat_mode_returns_none_on_last_track(self):
# Testing for bug 1512
self.core.playback.play()
self.core.tracklist.set_consume(True)
self.core.tracklist.set_repeat(True)
self.replay_events()
# Play through the list
for track in self.core.tracklist.get_tl_tracks():
self.core.playback.next()
self.replay_events()
# Try repeat, player state should remain as stopped (all tracks consumed)
self.core.playback.next()
self.replay_events()
self.assertEqual(self.playback.get_state(), 'stopped')
class TestCurrentAndPendingTlTrack(BaseTest):