diff options
author | Andy McCurdy <andy@andymccurdy.com> | 2011-04-26 16:47:09 -0700 |
---|---|---|
committer | Andy McCurdy <andy@andymccurdy.com> | 2011-04-26 16:47:09 -0700 |
commit | bbf8cc53c71c3cde9223f9414fb7b12ae24d6248 (patch) | |
tree | a77cfd0956bf5a21cc62126a4dadd5861d56876e | |
parent | d63088a26aa76989c6be785ba483e402c3a1e4a8 (diff) | |
download | redis-py-bbf8cc53c71c3cde9223f9414fb7b12ae24d6248.tar.gz |
__getitem__ now raises a KeyError when a key doesn't exist
-rw-r--r-- | CHANGES | 2 | ||||
-rw-r--r-- | redis/client.py | 6 | ||||
-rw-r--r-- | tests/lock.py | 4 | ||||
-rw-r--r-- | tests/server_commands.py | 7 |
4 files changed, 11 insertions, 8 deletions
@@ -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): |