[Erp5-report] r39559 kazuhiko - in /erp5/trunk/products/ERP5Type: Tool/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Oct 27 13:32:26 CEST 2010
Author: kazuhiko
Date: Wed Oct 27 13:32:24 2010
New Revision: 39559
URL: http://svn.erp5.org?rev=39559&view=rev
Log:
once key is deleted, get(key) should raises KeyError even in the same transaction.
Modified:
erp5/trunk/products/ERP5Type/Tool/MemcachedTool.py
erp5/trunk/products/ERP5Type/tests/testMemcachedTool.py
Modified: erp5/trunk/products/ERP5Type/Tool/MemcachedTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Tool/MemcachedTool.py?rev=39559&r1=39558&r2=39559&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Tool/MemcachedTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Tool/MemcachedTool.py [utf8] Wed Oct 27 13:32:24 2010
@@ -168,6 +168,8 @@ if memcache is not None:
# We need to register in this function too to be able to flush cache at
# transaction end.
self._register()
+ if self.scheduled_action_dict.get(key) == DELETE_ACTION:
+ raise KeyError
encoded_key = encodeKey(key)
result = self.local_cache.get(key, MARKER)
if result is MARKER:
@@ -207,8 +209,6 @@ if memcache is not None:
def get(self, key, default=None):
"""
Get an item from local cache, otherwise from memcached.
- Note that because __getitem__ never raises error, 'default' will never
- be used (None will be returned instead).
"""
try:
return self.__getitem__(key)
Modified: erp5/trunk/products/ERP5Type/tests/testMemcachedTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testMemcachedTool.py?rev=39559&r1=39558&r2=39559&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testMemcachedTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testMemcachedTool.py [utf8] Wed Oct 27 13:32:24 2010
@@ -154,8 +154,6 @@ class TestMemcachedTool(ERP5TypeTestCase
def test_04_deleteValue(self):
"""
Tests that deleting a value works.
- Note that deleting a value should raise a KeyError.
- But because of python-memcached limitations, all we get is a None value.
"""
tested_dict = self.getMemcachedDict()
tested_key = 'test_key'
@@ -163,7 +161,7 @@ class TestMemcachedTool(ERP5TypeTestCase
tested_dict[tested_key] = tested_value
self.assertTrue(tested_dict[tested_key] == tested_value)
del tested_dict[tested_key]
- self.assertTrue(tested_dict[tested_key] is None)
+ self.assertRaises(KeyError, tested_dict.__getitem__, tested_key)
def test_05_deleteValueAndCommit(self):
"""
More information about the Erp5-report
mailing list