[Erp5-report] r28978 - /erp5/trunk/products/ERP5Type/tests/testERP5Type.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Sep 11 16:37:57 CEST 2009
Author: jm
Date: Fri Sep 11 16:37:48 2009
New Revision: 28978
URL: http://svn.erp5.org?rev=28978&view=rev
Log:
Make sure a temp object can't be stored in the ZODB
Modified:
erp5/trunk/products/ERP5Type/tests/testERP5Type.py
Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=28978&r1=28977&r2=28978&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] Fri Sep 11 16:37:48 2009
@@ -26,12 +26,14 @@
#
##############################################################################
+import cPickle
import md5
import unittest
import sys
import transaction
from random import randint
+from Acquisition import aq_base
from Testing import ZopeTestCase
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from Products.ERP5Type.tests.utils import DummyLocalizer
@@ -278,9 +280,9 @@
o = portal.person_module.newContent(portal_type="Person",
temp_object=1)
except WriteError:
- raise self.failureException, "Container last ID modified"
+ self.fail("Container last ID modified")
finally:
- delattr(portal.person_module.__class__, '_setLastId')
+ del portal.person_module.__class__._setLastId
# the module is not changed from ZODB point of view
self.assertFalse(portal.person_module._p_changed)
@@ -289,7 +291,7 @@
transaction.commit()
self.assertEquals(o._p_jar, None)
- # Temp objects always get 'None' ID by default.
+ # Temp objects always get a dummy ID by default.
o = portal.person_module.newContent(portal_type="Person",
temp_object=1)
first_id = o.getId()
@@ -298,7 +300,17 @@
second_id = o.getId()
self.assertEquals(first_id, second_id)
self.assertEquals('None', second_id)
-
+
+ # Make sure a temp object can't be stored in the ZODB
+ portal.person_module._setObject(o.getId(), aq_base(o))
+ try:
+ transaction.commit()
+ except cPickle.PicklingError:
+ transaction.abort()
+ else:
+ self.fail("No exception raised when storing explicitly a temp object"
+ " on a persistent object")
+
# Check temp objects subobjects can be accessed with OFS API
parent = portal.person_module.newContent(portal_type="Person",
temp_object=1)
More information about the Erp5-report
mailing list