From 1aa5963697a4d8e45113b015d134fb9650516ef3 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Thu, 24 Jun 2010 19:59:21 +0200 Subject: [PATCH] MPD: Add correct index to error message when error happens while processing a command list --- mopidy/mpd/frontend.py | 12 ++++++++---- tests/mpd/frontend_test.py | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mopidy/mpd/frontend.py b/mopidy/mpd/frontend.py index 6b9052bd..494232df 100644 --- a/mopidy/mpd/frontend.py +++ b/mopidy/mpd/frontend.py @@ -60,7 +60,7 @@ class MpdFrontend(object): self.command_list = False self.command_list_ok = False - def handle_request(self, request, add_ok=True): + def handle_request(self, request, command_list_index=None): if self.command_list is not False and request != u'command_list_end': self.command_list.append(request) return None @@ -68,10 +68,14 @@ class MpdFrontend(object): (handler, kwargs) = self.find_handler(request) result = handler(self, **kwargs) except MpdAckError as e: + if command_list_index is not None: + e.index = command_list_index return self.handle_response(e.get_mpd_ack(), add_ok=False) if request in (u'command_list_begin', u'command_list_ok_begin'): return None - return self.handle_response(result, add_ok) + if command_list_index is not None: + return self.handle_response(result, add_ok=False) + return self.handle_response(result) def find_handler(self, request): for pattern in _request_handlers: @@ -175,8 +179,8 @@ class MpdFrontend(object): (command_list, self.command_list) = (self.command_list, False) (command_list_ok, self.command_list_ok) = (self.command_list_ok, False) result = [] - for command in command_list: - response = self.handle_request(command, add_ok=False) + for i, command in enumerate(command_list): + response = self.handle_request(command, command_list_index=i) if response is not None: result.append(response) if response and response[-1].startswith(u'ACK'): diff --git a/tests/mpd/frontend_test.py b/tests/mpd/frontend_test.py index 1a5e484d..a52b1131 100644 --- a/tests/mpd/frontend_test.py +++ b/tests/mpd/frontend_test.py @@ -82,11 +82,12 @@ class CommandListsTest(unittest.TestCase): self.assert_(u'OK' in result) self.assertEqual(False, self.h.command_list) - def test_command_list_with_error(self): + def test_command_list_with_error_returns_ack_with_correct_index(self): self.h.handle_request(u'command_list_begin') - self.h.handle_request(u'ack') + self.h.handle_request(u'play') # Known command + self.h.handle_request(u'paly') # Unknown command result = self.h.handle_request(u'command_list_end') - self.assert_(u'ACK' in result[-1]) + self.assertEqual(result[0], u'ACK [5@1] {} unknown command "paly"') def test_command_list_ok_begin(self): result = self.h.handle_request(u'command_list_ok_begin')