Fix 'play/playid "-1"' behaviour when playlist is empty

This commit is contained in:
Stein Magnus Jodal 2010-08-09 20:44:01 +02:00
parent 696942e3c0
commit 3339fb7de0
3 changed files with 19 additions and 0 deletions

View File

@ -18,6 +18,7 @@ Another great release.
- MPD frontend:
- Search improvements, including support for multi-word search.
- Fixed ``play "-1"`` and ``playid "-1"`` behaviour when playlist is empty.
- Backend API:

View File

@ -964,6 +964,8 @@ class MpdFrontend(object):
cpid = int(cpid)
try:
if cpid == -1:
if not self.backend.current_playlist.cp_tracks:
return # Fail silently
cp_track = self.backend.current_playlist.cp_tracks[0]
else:
cp_track = self.backend.current_playlist.get(cpid=cpid)
@ -989,6 +991,8 @@ class MpdFrontend(object):
songpos = int(songpos)
try:
if songpos == -1:
if not self.backend.current_playlist.cp_tracks:
return # Fail silently
cp_track = self.backend.current_playlist.cp_tracks[0]
else:
cp_track = self.backend.current_playlist.cp_tracks[songpos]

View File

@ -180,6 +180,13 @@ class PlaybackControlHandlerTest(unittest.TestCase):
self.assertEqual(self.b.playback.PLAYING, self.b.playback.state)
self.assertEqual(self.b.playback.current_track, track)
def test_play_minus_one_on_empty_playlist_does_not_ack(self):
self.b.current_playlist.clear()
result = self.h.handle_request(u'play "-1"')
self.assert_(u'OK' in result)
self.assertEqual(self.b.playback.STOPPED, self.b.playback.state)
self.assertEqual(self.b.playback.current_track, None)
def test_playid(self):
self.b.current_playlist.load([Track()])
result = self.h.handle_request(u'playid "1"')
@ -194,6 +201,13 @@ class PlaybackControlHandlerTest(unittest.TestCase):
self.assertEqual(self.b.playback.PLAYING, self.b.playback.state)
self.assertEqual(self.b.playback.current_track, track)
def test_playid_minus_one_on_empty_playlist_does_not_ack(self):
self.b.current_playlist.clear()
result = self.h.handle_request(u'playid "-1"')
self.assert_(u'OK' in result)
self.assertEqual(self.b.playback.STOPPED, self.b.playback.state)
self.assertEqual(self.b.playback.current_track, None)
def test_playid_which_does_not_exist(self):
self.b.current_playlist.load([Track()])
result = self.h.handle_request(u'playid "12345"')