summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy McCurdy <andy@andymccurdy.com>2011-04-26 16:47:09 -0700
committerAndy McCurdy <andy@andymccurdy.com>2011-04-26 16:47:09 -0700
commitbbf8cc53c71c3cde9223f9414fb7b12ae24d6248 (patch)
treea77cfd0956bf5a21cc62126a4dadd5861d56876e
parentd63088a26aa76989c6be785ba483e402c3a1e4a8 (diff)
downloadredis-py-bbf8cc53c71c3cde9223f9414fb7b12ae24d6248.tar.gz
__getitem__ now raises a KeyError when a key doesn't exist
-rw-r--r--CHANGES2
-rw-r--r--redis/client.py6
-rw-r--r--tests/lock.py4
-rw-r--r--tests/server_commands.py7
4 files changed, 11 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index f9a8fab..b8090a6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
* 2.2.5 (in development)
* Support Jython, fixing #97. Thanks to Adam Vandenberg for the patch.
+ * Using __getitem__ now properly raises a KeyError when the key is not
+ found. Thanks Ionuț Arțăriși for the patch.
* 2.2.4
* WARNING: Potential backwards incompatible change - Changed order of
parameters of ZREVRANGEBYSCORE to match those of the actual Redis command.
diff --git a/redis/client.py b/redis/client.py
index 744d221..754e4e8 100644
--- a/redis/client.py
+++ b/redis/client.py
@@ -452,9 +452,9 @@ class Redis(threading.local):
Return the value at key ``name``, raises a KeyError if the key
doesn't exist.
"""
- _name = self.get(name)
- if _name:
- return _name
+ value = self.get(name)
+ if value:
+ return value
else:
raise KeyError(name)
diff --git a/tests/lock.py b/tests/lock.py
index 6311b9a..9a32542 100644
--- a/tests/lock.py
+++ b/tests/lock.py
@@ -17,7 +17,7 @@ class LockTestCase(unittest.TestCase):
self.assert_(lock.acquire())
self.assertEquals(self.client['foo'], str(Lock.LOCK_FOREVER))
lock.release()
- self.assertEquals(self.client['foo'], None)
+ self.assertEquals(self.client.get('foo'), None)
def test_competing_locks(self):
lock1 = self.client.lock('foo')
@@ -50,7 +50,7 @@ class LockTestCase(unittest.TestCase):
def test_context_manager(self):
with self.client.lock('foo'):
self.assertEquals(self.client['foo'], str(Lock.LOCK_FOREVER))
- self.assertEquals(self.client['foo'], None)
+ self.assertEquals(self.client.get('foo'), None)
def test_float_timeout(self):
lock1 = self.client.lock('foo', timeout=1.5)
diff --git a/tests/server_commands.py b/tests/server_commands.py
index 742f356..8d5abdd 100644
--- a/tests/server_commands.py
+++ b/tests/server_commands.py
@@ -41,6 +41,7 @@ class ServerCommandsTestCase(unittest.TestCase):
def test_getitem_and_setitem(self):
self.client['a'] = 'bar'
self.assertEquals(self.client['a'], 'bar')
+ self.assertRaises(KeyError, self.client.__getitem__, 'b')
def test_delete(self):
self.assertEquals(self.client.delete('a'), False)
@@ -50,7 +51,7 @@ class ServerCommandsTestCase(unittest.TestCase):
def test_delitem(self):
self.client['a'] = 'foo'
del self.client['a']
- self.assertEquals(self.client['a'], None)
+ self.assertEquals(self.client.get('a'), None)
def test_config_get(self):
data = self.client.config_get()
@@ -181,7 +182,7 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assert_(not self.client.msetnx(d2))
for k,v in d.iteritems():
self.assertEquals(self.client[k], v)
- self.assertEquals(self.client['d'], None)
+ self.assertEquals(self.client.get('d'), None)
def test_randomkey(self):
self.assertEquals(self.client.randomkey(), None)
@@ -193,7 +194,7 @@ class ServerCommandsTestCase(unittest.TestCase):
def test_rename(self):
self.client['a'] = '1'
self.assert_(self.client.rename('a', 'b'))
- self.assertEquals(self.client['a'], None)
+ self.assertEquals(self.client.get('a'), None)
self.assertEquals(self.client['b'], '1')
def test_renamenx(self):