Skip to content

Commit aa58d50

Browse files
committed
Make sure base URL is non-unicode string on Python 2 (fixes #235)
1 parent 649c02d commit aa58d50

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

couchdb/http.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,8 @@ def __del__(self):
520520
class Resource(object):
521521

522522
def __init__(self, url, session, headers=None):
523+
if sys.version_info[0] == 2 and isinstance(url, util.utype):
524+
url = url.encode('utf-8') # kind of an ugly hack for issue 235
523525
self.url, self.credentials = extract_credentials(url)
524526
if session is None:
525527
session = Session()

couchdb/tests/client.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import os
1111
import os.path
1212
import shutil
13+
import sys
1314
import time
1415
import tempfile
1516
import threading
@@ -116,6 +117,20 @@ def test_uuids(self):
116117
ls = self.server.uuids(count=10)
117118
assert type(ls) == list and len(ls) == 10
118119

120+
def test_235_unicode_server(self):
121+
122+
url = client.DEFAULT_BASE_URL
123+
if not isinstance(url, util.utype):
124+
url = url.decode('utf-8')
125+
126+
server = client.Server(url)
127+
dbname = 'couchdb-python/test-235-unicode-server'
128+
db = server.create(dbname)
129+
try:
130+
db.update([{'foo': u'\ua000'}])
131+
finally:
132+
server.delete(dbname)
133+
119134

120135
class DatabaseTestCase(testutil.TempDatabaseMixin, unittest.TestCase):
121136

0 commit comments

Comments
 (0)