From 5de9495eaaa4002b7e62c82431542097f9cc013c Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sat, 5 Dec 2015 14:01:43 +0100 Subject: [PATCH] mpd: Update playlistdelete to handle unknown names and indexes --- mopidy/mpd/protocol/stored_playlists.py | 9 ++++++--- tests/mpd/protocol/test_stored_playlists.py | 9 +++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mopidy/mpd/protocol/stored_playlists.py b/mopidy/mpd/protocol/stored_playlists.py index fd395696..affd1126 100644 --- a/mopidy/mpd/protocol/stored_playlists.py +++ b/mopidy/mpd/protocol/stored_playlists.py @@ -254,9 +254,12 @@ def playlistdelete(context, name, songpos): if not playlist: raise exceptions.MpdNoExistError('No such playlist') - # Convert tracks to list and remove requested - tracks = list(playlist.tracks) - tracks.pop(songpos) + try: + # Convert tracks to list and remove requested + tracks = list(playlist.tracks) + tracks.pop(songpos) + except IndexError: + raise exceptions.MpdArgError('Bad song index') # Replace tracks and save playlist playlist = playlist.replace(tracks=tracks) diff --git a/tests/mpd/protocol/test_stored_playlists.py b/tests/mpd/protocol/test_stored_playlists.py index e33b1bc2..6b568667 100644 --- a/tests/mpd/protocol/test_stored_playlists.py +++ b/tests/mpd/protocol/test_stored_playlists.py @@ -314,6 +314,15 @@ class PlaylistsHandlerTest(protocol.BaseTestCase): 'invalid: playlist names may not contain ' 'slashes, newlines or carriage returns') + def test_playlistdelete_unknown_playlist_acks(self): + self.send_request('playlistdelete "foobar" "0"') + self.assertInResponse('ACK [50@0] {playlistdelete} No such playlist') + + def test_playlistdelete_unknown_index_acks(self): + self.send_request('save "foobar"') + self.send_request('playlistdelete "foobar" "0"') + self.assertInResponse('ACK [2@0] {playlistdelete} Bad song index') + def test_playlistmove(self): tracks = [ Track(uri='dummy:a'),