diff options
-rw-r--r-- | redis/client.py | 5 | ||||
-rw-r--r-- | tests/__init__.py | 4 | ||||
-rw-r--r-- | tests/encoding.py | 35 | ||||
-rw-r--r-- | tests/server_commands.py | 7 |
4 files changed, 46 insertions, 5 deletions
diff --git a/redis/client.py b/redis/client.py index 9c5b501..ea1d76d 100644 --- a/redis/client.py +++ b/redis/client.py @@ -186,8 +186,8 @@ class StrictRedis(object): def __init__(self, host='localhost', port=6379, db=0, password=None, socket_timeout=None, - connection_pool=None, - charset='utf-8', errors='strict', unix_socket_path=None): + connection_pool=None, charset='utf-8', + errors='strict', unix_socket_path=None, **extra_kwargs): if not connection_pool: kwargs = { 'db': db, @@ -207,6 +207,7 @@ class StrictRedis(object): 'host': host, 'port': port }) + kwargs.update(extra_kwargs) connection_pool = ConnectionPool(**kwargs) self.connection_pool = connection_pool diff --git a/tests/__init__.py b/tests/__init__.py index f7db7b1..56227ad 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -4,6 +4,7 @@ from connection_pool import ConnectionPoolTestCase from pipeline import PipelineTestCase from lock import LockTestCase from pubsub import PubSubTestCase, PubSubRedisDownTestCase +from encoding import PythonParserEncodingTestCase, HiredisEncodingTestCase use_hiredis = False try: @@ -20,4 +21,7 @@ def all_tests(): suite.addTest(unittest.makeSuite(LockTestCase)) suite.addTest(unittest.makeSuite(PubSubTestCase)) suite.addTest(unittest.makeSuite(PubSubRedisDownTestCase)) + suite.addTest(unittest.makeSuite(PythonParserEncodingTestCase)) + if use_hiredis: + suite.addTest(unittest.makeSuite(HiredisEncodingTestCase)) return suite diff --git a/tests/encoding.py b/tests/encoding.py new file mode 100644 index 0000000..69c3fbc --- /dev/null +++ b/tests/encoding.py @@ -0,0 +1,35 @@ +from __future__ import with_statement +import redis +from redis.connection import PythonParser, HiredisParser +import unittest + +class EncodingTestCase(unittest.TestCase): + def setUp(self): + self.client = redis.Redis(host='localhost', port=6379, db=9, + charset='utf-8') + self.client.flushdb() + + def tearDown(self): + self.client.flushdb() + + def test_encoding(self): + unicode_string = unichr(3456) + u'abcd' + unichr(3421) + self.client.set('unicode-string', unicode_string) + cached_val = self.client.get('unicode-string') + self.assertEqual('unicode', type(cached_val).__name__, + 'Cache returned value with type "%s", expected "unicode"' \ + % type(cached_val).__name__ + ) + self.assertEqual(unicode_string, cached_val) + +class PythonParserEncodingTestCase(EncodingTestCase): + def setUp(self): + self.client = redis.Redis(host='localhost', port=6379, db=9, + charset='utf-8', parser_class=PythonParser) + self.client.flushdb() + +class HiredisEncodingTestCase(EncodingTestCase): + def setUp(self): + self.client = redis.Redis(host='localhost', port=6379, db=9, + charset='utf-8', parser_class=HiredisParser) + self.client.flushdb()
\ No newline at end of file diff --git a/tests/server_commands.py b/tests/server_commands.py index 680a0c7..7dc4fad 100644 --- a/tests/server_commands.py +++ b/tests/server_commands.py @@ -47,9 +47,10 @@ class ServerCommandsTestCase(unittest.TestCase): self.assert_(self.client.set('unicode_string', unicode_string)) self.assertEquals(self.client.get('byte_string'), byte_string) self.assertEquals(self.client.get('integer'), str(integer)) - self.assertEquals( - self.client.get('unicode_string').decode('utf-8'), - unicode_string) + cache_value = self.client.get('unicode_string') + if isinstance(cache_value, str): + cache_value = cache_value.decode('utf-8') + self.assertEquals(cache_value, unicode_string) def test_getitem_and_setitem(self): self.client['a'] = 'bar' |