Merge branch 'master' of git://github.com/jodal/mopidy

This commit is contained in:
Johannes Knutsen 2010-03-30 00:10:36 +02:00
commit 81885d27d7
4 changed files with 52 additions and 17 deletions

View File

@ -6,7 +6,20 @@ def get_version():
def get_mpd_protocol_version():
return u'0.16.0'
class SettingsError(Exception):
class MopidyException(Exception):
def __init__(self, message):
self.message = message
@property
def message(self):
"""Reimplement message field that was deprecated in Python 2.6"""
return self._message
@message.setter
def message(self, message):
self._message = message
class SettingsError(MopidyException):
pass
class Settings(object):

View File

@ -1,6 +1,8 @@
class MpdAckError(Exception):
from mopidy import MopidyException
class MpdAckError(MopidyException):
pass
class MpdNotImplemented(MpdAckError):
def __init__(self, *args):
super(MpdNotImplemented, self).__init__(u'Not implemented', *args)
def __init__(self):
super(MpdNotImplemented, self).__init__(u'Not implemented')

View File

@ -64,8 +64,9 @@ class MpdFrontend(object):
groups = matches.groupdict()
try:
result = _request_handlers[pattern](self, **groups)
except MpdAckError, e:
return self.handle_response(u'ACK %s' % e, add_ok=False)
except MpdAckError as e:
return self.handle_response(u'ACK %s' % e.message,
add_ok=False)
if self.command_list is not False:
return None
else:
@ -285,7 +286,7 @@ class MpdFrontend(object):
songpos = int(songpos)
track = self.backend.current_playlist.playlist.tracks[songpos]
self.backend.current_playlist.remove(track)
except IndexError, e:
except IndexError as e:
raise MpdAckError(u'Position out of bounds')
@handle_pattern(r'^deleteid "(?P<songid>\d+)"$')
@ -301,8 +302,8 @@ class MpdFrontend(object):
try:
track = self.backend.current_playlist.get_by_id(songid)
return self.backend.current_playlist.remove(track)
except KeyError, e:
raise MpdAckError(unicode(e))
except KeyError as e:
raise MpdAckError(e[0])
@handle_pattern(r'^clear$')
def _current_playlist_clear(self):
@ -408,8 +409,8 @@ class MpdFrontend(object):
songid = int(songid)
track = self.backend.current_playlist.get_by_id(songid)
return track.mpd_format()
except KeyError, e:
raise MpdAckError(e)
except KeyError as e:
raise MpdAckError(e[0])
else:
return self.backend.current_playlist.playlist.mpd_format()
@ -825,8 +826,8 @@ class MpdFrontend(object):
try:
track = self.backend.current_playlist.get_by_id(songid)
return self.backend.playback.play(track)
except KeyError, e:
raise MpdAckError(unicode(e))
except KeyError as e:
raise MpdAckError(e[0])
@handle_pattern(r'^play "(?P<songpos>\d+)"$')
def _playback_playpos(self, songpos):
@ -1335,8 +1336,8 @@ class MpdFrontend(object):
try:
return ['file: %s' % t.uri
for t in self.backend.stored_playlists.get_by_name(name).tracks]
except KeyError, e:
raise MpdAckError(e)
except KeyError as e:
raise MpdAckError(e[0])
@handle_pattern(r'^listplaylistinfo "(?P<name>[^"]+)"$')
def _stored_playlists_listplaylistinfo(self, name):
@ -1355,8 +1356,8 @@ class MpdFrontend(object):
try:
return self.backend.stored_playlists.get_by_name(name).mpd_format(
search_result=True)
except KeyError, e:
raise MpdAckError(e)
except KeyError as e:
raise MpdAckError(e[0])
@handle_pattern(r'^listplaylists$')
def _stored_playlists_listplaylists(self):

View File

@ -0,0 +1,19 @@
import unittest
from mopidy.mpd import MpdAckError, MpdNotImplemented
class MpdExceptionsTest(unittest.TestCase):
def test_key_error_wrapped_in_mpd_ack_error(self):
try:
try:
raise KeyError(u'Track X not found')
except KeyError as e:
raise MpdAckError(e[0])
except MpdAckError as e:
self.assertEqual(e.message, u'Track X not found')
def test_mpd_not_implemented_is_a_mpd_ack_error(self):
try:
raise MpdNotImplemented
except MpdAckError as e:
self.assertEqual(e.message, u'Not implemented')