[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