Fix swiftclient.client.quote() for Python 3
On Python 3, urllib.parse.quote() accepts bytes and str (unicode) types and always return str (unicode). Add also more tests with non-ASCII characters. Change-Id: I8e0f19da7240e874392327d0da074ed4abb7d213
This commit is contained in:
parent
c5cc2b7b7e
commit
155053ea61
@ -97,8 +97,11 @@ def http_log(args, kwargs, resp, body):
|
||||
|
||||
def quote(value, safe='/'):
|
||||
"""
|
||||
Patched version of urllib.quote that encodes utf8 strings before quoting
|
||||
Patched version of urllib.quote that encodes utf8 strings before quoting.
|
||||
On Python 3, call directly urllib.parse.quote().
|
||||
"""
|
||||
if six.PY3:
|
||||
return _quote(value, safe=safe)
|
||||
value = encode_utf8(value)
|
||||
if isinstance(value, bytes):
|
||||
return _quote(value, safe)
|
||||
|
@ -182,10 +182,14 @@ class MockHttpResponse():
|
||||
class TestHttpHelpers(MockHttpTest):
|
||||
|
||||
def test_quote(self):
|
||||
value = 'standard string'
|
||||
self.assertEqual(b'standard%20string', c.quote(value))
|
||||
value = u'\u0075nicode string'
|
||||
self.assertEqual(b'unicode%20string', c.quote(value))
|
||||
value = b'bytes\xff'
|
||||
self.assertEqual('bytes%FF', c.quote(value))
|
||||
value = 'native string'
|
||||
self.assertEqual('native%20string', c.quote(value))
|
||||
value = u'unicode string'
|
||||
self.assertEqual('unicode%20string', c.quote(value))
|
||||
value = u'unicode:\xe9\u20ac'
|
||||
self.assertEqual('unicode%3A%C3%A9%E2%82%AC', c.quote(value))
|
||||
|
||||
def test_http_connection(self):
|
||||
url = 'http://www.test.com'
|
||||
|
Loading…
x
Reference in New Issue
Block a user