Support unicode message in ClientSideError
This change add support to unicode message in ClientSideError. Before the change a UnicodeEncodeError is raised when a unicode string is used in a ClientSideError Exception: Traceback (most recent call last): File "/data/os_dev/stack-master/wsme/.tox/py27/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/data/os_dev/stack-master/wsme/wsme/tests/test_exc.py", line 16, in test_unicode_clientside_error assert e.faultstring == u("\u30d5\u30a1\u30b7\u30ea") File "/data/os_dev/stack-master/wsme/wsme/exc.py", line 12, in faultstring return str(self) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) --HG-- branch : sileht/unicode-clientsideerror
This commit is contained in:
parent
f9fe028eff
commit
206f9156b2
19
wsme/exc.py
19
wsme/exc.py
@ -5,19 +5,24 @@ from wsme.utils import _
|
||||
|
||||
class ClientSideError(RuntimeError):
|
||||
def __init__(self, msg=None):
|
||||
super(ClientSideError, self).__init__(msg if msg else self.faultstring)
|
||||
self.msg = msg
|
||||
super(ClientSideError, self).__init__(self.faultstring)
|
||||
|
||||
@property
|
||||
def faultstring(self):
|
||||
return str(self)
|
||||
if self.msg is None:
|
||||
return str(self)
|
||||
elif isinstance(self.msg, six.text_type):
|
||||
return self.msg
|
||||
else:
|
||||
return six.u(self.msg)
|
||||
|
||||
|
||||
class InvalidInput(ClientSideError):
|
||||
def __init__(self, fieldname, value, msg=''):
|
||||
self.fieldname = fieldname
|
||||
self.value = value
|
||||
self.msg = msg
|
||||
super(InvalidInput, self).__init__()
|
||||
super(InvalidInput, self).__init__(msg)
|
||||
|
||||
@property
|
||||
def faultstring(self):
|
||||
@ -29,8 +34,7 @@ class InvalidInput(ClientSideError):
|
||||
class MissingArgument(ClientSideError):
|
||||
def __init__(self, argname, msg=''):
|
||||
self.argname = argname
|
||||
self.msg = msg
|
||||
super(MissingArgument, self).__init__()
|
||||
super(MissingArgument, self).__init__(msg)
|
||||
|
||||
@property
|
||||
def faultstring(self):
|
||||
@ -41,8 +45,7 @@ class MissingArgument(ClientSideError):
|
||||
class UnknownArgument(ClientSideError):
|
||||
def __init__(self, argname, msg=''):
|
||||
self.argname = argname
|
||||
self.msg = msg
|
||||
super(UnknownArgument, self).__init__()
|
||||
super(UnknownArgument, self).__init__(msg)
|
||||
|
||||
@property
|
||||
def faultstring(self):
|
||||
|
@ -7,7 +7,13 @@ from six import u
|
||||
def test_clientside_error():
|
||||
e = ClientSideError("Test")
|
||||
|
||||
assert e.faultstring == "Test"
|
||||
assert e.faultstring == u("Test")
|
||||
|
||||
|
||||
def test_unicode_clientside_error():
|
||||
e = ClientSideError(u("\u30d5\u30a1\u30b7\u30ea"))
|
||||
|
||||
assert e.faultstring == u("\u30d5\u30a1\u30b7\u30ea")
|
||||
|
||||
|
||||
def test_invalidinput():
|
||||
|
Loading…
x
Reference in New Issue
Block a user