Merged in cmcdaniel/wsme/empty_strings3 (pull request #11: restxml empty string fixes)
This commit is contained in:
commit
366bec59ae
@ -203,6 +203,13 @@ def dict_fromxml(datatype, element):
|
|||||||
for item in element.findall('item')))
|
for item in element.findall('item')))
|
||||||
|
|
||||||
|
|
||||||
|
@fromxml.when_object(wsme.types.text)
|
||||||
|
def unicode_fromxml(datatype, element):
|
||||||
|
if element.get('nil') == 'true':
|
||||||
|
return None
|
||||||
|
return wsme.types.text(element.text) if element.text else six.u('')
|
||||||
|
|
||||||
|
|
||||||
@fromxml.when_object(datetime.date)
|
@fromxml.when_object(datetime.date)
|
||||||
def date_fromxml(datatype, element):
|
def date_fromxml(datatype, element):
|
||||||
if element.get('nil') == 'true':
|
if element.get('nil') == 'true':
|
||||||
|
@ -176,6 +176,13 @@ class ArgTypes(object):
|
|||||||
assert type(value) == wsme.types.text
|
assert type(value) == wsme.types.text
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
@expose(wsme.types.text)
|
||||||
|
@validate(wsme.types.text)
|
||||||
|
def settextnone(self, value):
|
||||||
|
print(repr(value))
|
||||||
|
assert type(value) == type(None)
|
||||||
|
return value
|
||||||
|
|
||||||
@expose(bool)
|
@expose(bool)
|
||||||
@validate(bool)
|
@validate(bool)
|
||||||
def setbool(self, value):
|
def setbool(self, value):
|
||||||
@ -475,6 +482,14 @@ class ProtocolTestCase(unittest.TestCase):
|
|||||||
assert self.call('argtypes/settext', value=u('\xe3\x81\xae'),
|
assert self.call('argtypes/settext', value=u('\xe3\x81\xae'),
|
||||||
_rt=wsme.types.text) == u('\xe3\x81\xae')
|
_rt=wsme.types.text) == u('\xe3\x81\xae')
|
||||||
|
|
||||||
|
def test_settext_empty(self):
|
||||||
|
assert self.call('argtypes/settext', value=u(''),
|
||||||
|
_rt=wsme.types.text) == u('')
|
||||||
|
|
||||||
|
def test_settext_none(self):
|
||||||
|
assert self.call('argtypes/settextnone', value=None,
|
||||||
|
_rt=wsme.types.text) == None
|
||||||
|
|
||||||
def test_setint(self):
|
def test_setint(self):
|
||||||
r = self.call('argtypes/setint', value=3, _rt=int)
|
r = self.call('argtypes/setint', value=3, _rt=int)
|
||||||
assert r == 3, r
|
assert r == 3, r
|
||||||
|
@ -40,6 +40,8 @@ def dumpxml(key, obj, datatype=None):
|
|||||||
el.text = six.text_type(obj)
|
el.text = six.text_type(obj)
|
||||||
elif type(obj) in (datetime.date, datetime.time, datetime.datetime):
|
elif type(obj) in (datetime.date, datetime.time, datetime.datetime):
|
||||||
el.text = obj.isoformat()
|
el.text = obj.isoformat()
|
||||||
|
elif type(obj) == type(None):
|
||||||
|
el.set('nil', 'true')
|
||||||
elif hasattr(datatype, '_wsme_attributes'):
|
elif hasattr(datatype, '_wsme_attributes'):
|
||||||
for attr in datatype._wsme_attributes:
|
for attr in datatype._wsme_attributes:
|
||||||
name = attr.name
|
name = attr.name
|
||||||
@ -98,6 +100,8 @@ def loadxml(el, datatype):
|
|||||||
return parse_isotime(el.text)
|
return parse_isotime(el.text)
|
||||||
if datatype == datetime.datetime:
|
if datatype == datetime.datetime:
|
||||||
return parse_isodatetime(el.text)
|
return parse_isodatetime(el.text)
|
||||||
|
if datatype == wsme.types.text:
|
||||||
|
return datatype(el.text if el.text else u(''))
|
||||||
if datatype == bool:
|
if datatype == bool:
|
||||||
return el.text.lower() != 'false'
|
return el.text.lower() != 'false'
|
||||||
if datatype is None:
|
if datatype is None:
|
||||||
|
@ -18,7 +18,7 @@ class TestSpore(unittest.TestCase):
|
|||||||
|
|
||||||
spore = json.loads(spore)
|
spore = json.loads(spore)
|
||||||
|
|
||||||
assert len(spore['methods']) == 45, str(len(spore['methods']))
|
assert len(spore['methods']) == 46, str(len(spore['methods']))
|
||||||
|
|
||||||
m = spore['methods']['argtypes_setbytesarray']
|
m = spore['methods']['argtypes_setbytesarray']
|
||||||
assert m['path'] == 'argtypes/setbytesarray', m['path']
|
assert m['path'] == 'argtypes/setbytesarray', m['path']
|
||||||
|
Loading…
x
Reference in New Issue
Block a user