Merge pull request #630 from kingosticks/fix/ack-empty-mpd-command

Empty MPD commands should return an error instead of OK, just like the o...
This commit is contained in:
Thomas Adamcik 2014-01-08 15:08:05 -08:00
commit 8df6a74f12
5 changed files with 26 additions and 6 deletions

View File

@ -7,6 +7,11 @@ This changelog is used to track all major changes to Mopidy.
v0.18.0 (UNRELEASED)
====================
**MPD frontend**
- Empty commands now return a ``ACK [5@0] {} No command given`` error instead
of ``OK``. This is consistent with the original MPD server implementation.
**Core API**
- Expose :meth:`mopidy.core.Core.version` for HTTP clients to manage

View File

@ -62,6 +62,12 @@ class MpdUnknownCommand(MpdAckError):
self.command = ''
class MpdNoCommand(MpdUnknownCommand):
def __init__(self, *args, **kwargs):
super(MpdNoCommand, self).__init__(*args, **kwargs)
self.message = 'No command given'
class MpdNoExistError(MpdAckError):
error_code = MpdAckError.ACK_ERROR_NO_EXIST

View File

@ -1,9 +1,10 @@
from __future__ import unicode_literals
from mopidy.mpd.protocol import handle_request
from mopidy.mpd.exceptions import MpdNoCommand
@handle_request(r'[\ ]*$')
def empty(context):
"""The original MPD server returns ``OK`` on an empty request."""
pass
"""The original MPD server returns an error on an empty request."""
raise MpdNoCommand

View File

@ -3,8 +3,8 @@ from __future__ import unicode_literals
import unittest
from mopidy.mpd.exceptions import (
MpdAckError, MpdPermissionError, MpdUnknownCommand, MpdSystemError,
MpdNotImplemented)
MpdAckError, MpdPermissionError, MpdUnknownCommand, MpdNoCommand,
MpdSystemError, MpdNotImplemented)
class MpdExceptionsTest(unittest.TestCase):
@ -41,6 +41,14 @@ class MpdExceptionsTest(unittest.TestCase):
e.get_mpd_ack(),
'ACK [5@0] {} unknown command "play"')
def test_mpd_no_command(self):
try:
raise MpdNoCommand
except MpdAckError as e:
self.assertEqual(
e.get_mpd_ack(),
'ACK [5@0] {} No command given')
def test_mpd_system_error(self):
try:
raise MpdSystemError('foo')

View File

@ -14,10 +14,10 @@ class ConnectionHandlerTest(protocol.BaseTestCase):
def test_empty_request(self):
self.sendRequest('')
self.assertEqualResponse('OK')
self.assertEqualResponse('ACK [5@0] {} No command given')
self.sendRequest(' ')
self.assertEqualResponse('OK')
self.assertEqualResponse('ACK [5@0] {} No command given')
def test_kill(self):
self.sendRequest('kill')