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:
commit
8df6a74f12
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -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')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user