Try to fix exception message handling on Solaris and/or Python 2.6.5

This commit is contained in:
Stein Magnus Jodal 2010-03-29 20:29:07 +02:00
parent 3e4514cf64
commit 1498c2cbba
3 changed files with 34 additions and 14 deletions

View File

@ -1,6 +1,7 @@
class MpdAckError(Exception):
pass
def __init__(self, msg):
self.msg = msg
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,8 @@ 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.msg, add_ok=False)
if self.command_list is not False:
return None
else:
@ -285,7 +285,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,7 +301,7 @@ class MpdFrontend(object):
try:
track = self.backend.current_playlist.get_by_id(songid)
return self.backend.current_playlist.remove(track)
except KeyError, e:
except KeyError as e:
raise MpdAckError(unicode(e))
@handle_pattern(r'^clear$')
@ -408,8 +408,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(unicode(e))
else:
return self.backend.current_playlist.playlist.mpd_format()
@ -821,7 +821,7 @@ class MpdFrontend(object):
try:
track = self.backend.current_playlist.get_by_id(songid)
return self.backend.playback.play(track)
except KeyError, e:
except KeyError as e:
raise MpdAckError(unicode(e))
@handle_pattern(r'^play "(?P<songpos>\d+)"$')
@ -1331,8 +1331,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(unicode(e))
@handle_pattern(r'^listplaylistinfo "(?P<name>[^"]+)"$')
def _stored_playlists_listplaylistinfo(self, name):
@ -1351,8 +1351,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(unicode(e))
@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('Track X not found')
except KeyError as e:
raise MpdAckError(unicode(e))
except MpdAckError as e:
self.assertEqual(e.msg, 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.msg, u'Not implemented')