From 239a7be7082befae844a983a110d03c577131809 Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 20 Jan 2016 15:41:58 +0200 Subject: [PATCH] fix: ensure that tl_track information is included in event trigger when consume mode is enabled. --- mopidy/core/playback.py | 5 +++-- tests/core/test_playback.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index 89bd92ee..7170969e 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -516,7 +516,8 @@ class PlaybackController(object): listener.CoreListener.send('track_playback_started', tl_track=tl_track) def _trigger_track_playback_ended(self, time_position_before_stop): - if self.get_current_tl_track() is None: + tl_track = self.get_current_tl_track() + if tl_track is None: return logger.debug('Triggering track playback ended event') @@ -528,7 +529,7 @@ class PlaybackController(object): # TODO: Use the lowest of track duration and position. listener.CoreListener.send( 'track_playback_ended', - tl_track=self.get_current_tl_track(), + tl_track=tl_track, time_position=time_position_before_stop) def _trigger_playback_state_changed(self, old_state, new_state): diff --git a/tests/core/test_playback.py b/tests/core/test_playback.py index 06d516ac..2fb95437 100644 --- a/tests/core/test_playback.py +++ b/tests/core/test_playback.py @@ -491,6 +491,34 @@ class EventEmissionTest(BaseTest): ], listener_mock.send.mock_calls) + def test_next_emits_events_when_consume_mode_is_enabled(self, listener_mock): + tl_tracks = self.core.tracklist.get_tl_tracks() + + self.core.tracklist.set_consume(True) + self.core.playback.play(tl_tracks[0]) + self.replay_events() + self.core.playback.seek(1000) + self.replay_events() + listener_mock.reset_mock() + + self.core.playback.next() + self.replay_events() + + self.assertListEqual( + [ + mock.call( + 'tracklist_changed'), + mock.call( + 'track_playback_ended', + tl_track=tl_tracks[0], time_position=mock.ANY), + mock.call( + 'playback_state_changed', + old_state='playing', new_state='playing'), + mock.call( + 'track_playback_started', tl_track=tl_tracks[1]), + ], + listener_mock.send.mock_calls) + def test_gapless_track_change_emits_events(self, listener_mock): tl_tracks = self.core.tracklist.get_tl_tracks()