[Erp5-report] r38638 jm - /erp5/trunk/products/ERP5Type/tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Sat Sep 25 17:48:18 CEST 2010
Author: jm
Date: Sat Sep 25 17:48:17 2010
New Revision: 38638
URL: http://svn.erp5.org?rev=38638&view=rev
Log:
ERP5TypeTestCase: cleanup
- remove 'current_app' global variable
- clean initialization of self.app and self.portal
Modified:
erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
erp5/trunk/products/ERP5Type/tests/ProcessingNodeTestCase.py
Modified: erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py?rev=38638&r1=38637&r2=38638&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py [utf8] Sat Sep 25 17:48:17 2010
@@ -26,7 +26,6 @@ from warnings import warn
from ZTUtils import make_query
# XXX make sure that get_request works.
-current_app = None
import Products.ERP5Type.Utils
from Products.ERP5Type import Globals
@@ -34,23 +33,24 @@ from Products.ERP5Type import Globals
original_get_request = Globals.get_request
convertToUpperCase = Products.ERP5Type.Utils.convertToUpperCase
+from Testing.ZopeTestCase.connections import registry
+def get_context():
+ if registry:
+ return registry._conns[-1]
+
def get_request():
request = original_get_request()
if request is not None:
return request
+ current_app = get_context()
if current_app is not None:
return current_app.REQUEST
- else:
- return None
Products.ERP5Type.Utils.get_request = get_request
Globals.get_request = get_request
-
try:
import itools.zope
- def get_context():
- return current_app
itools.zope.get_context = get_context
except ImportError:
pass
@@ -315,10 +315,15 @@ class ERP5TypeTestCase(ProcessingNodeTes
def getPortal(self):
"""Returns the portal object, i.e. the "fixture root".
+
+ It also does some initialization, as if the portal was accessed for the
+ first time for the current request.
+ For performance reason, this should be used in only 3 places:
+ 'setUpERP5Site', 'tic' and 'PortalTestCase._portal'
"""
portal = self.app[self.getPortalName()]
- # FIXME: Try not to run this call below so often by moving it somewhere
- # where it is called exactly once per test.
+ # Make sure skins are correctly set-up (it's not implicitly set up
+ # by Acquisition on Zope 2.12 as it is on 2.8)
portal.setupCurrentSkin(portal.REQUEST)
self.REQUEST = portal.REQUEST
setSite(portal)
@@ -525,9 +530,6 @@ class ERP5TypeTestCase(ProcessingNodeTes
erp5_catalog_storage=erp5_catalog_storage,
use_dummy_mail_host=use_dummy_mail_host)
PortalTestCase.setUp(self)
- global current_app
- current_app = self.app
- self._updateConnectionStrings()
def afterSetUp(self):
'''Called after setUp() has completed. This is
@@ -551,15 +553,11 @@ class ERP5TypeTestCase(ProcessingNodeTes
def _updateConnectionStrings(self):
"""Update connection strings with values passed by the testRunner
"""
- global current_app
- if current_app is not None:
- self.app = current_app
- portal = self.getPortal()
# update connection strings
for connection_string_name, connection_string in\
_getConnectionStringDict().items():
connection_name = connection_string_name.replace('_string', '')
- getattr(portal, connection_name).edit('', connection_string)
+ getattr(self.portal, connection_name).edit('', connection_string)
def _setUpDummyMailHost(self):
"""Replace Original Mail Host by Dummy Mail Host.
@@ -833,7 +831,6 @@ class ERP5TypeTestCase(ProcessingNodeTes
def setUpERP5Site(self,
business_template_list=(),
- app=None,
quiet=0,
light_install=1,
create_activities=1,
@@ -852,17 +849,12 @@ class ERP5TypeTestCase(ProcessingNodeTes
raise SetupSiteError(
'Installation of %s already failed, giving up' % portal_name)
try:
- if app is None:
- app = ZopeTestCase.app()
- # this app will be closed after setUp, but keep an reference anyway, to
- # make it's REQUEST available during setup
- global current_app
- current_app = app
+ self.app = app = self._app()
app.test_portal_name = portal_name
global setup_done
- if not (hasattr(aq_base(app), portal_name) and
- setup_done.get(tuple(business_template_list))):
+ portal = app._getOb(portal_name, None)
+ if portal is None or not setup_done.get(tuple(business_template_list)):
setup_done[tuple(business_template_list)] = 1
business_template_list = \
self._getBTPathAndIdList(business_template_list)
@@ -882,7 +874,6 @@ class ERP5TypeTestCase(ProcessingNodeTes
setattr(app, 'isIndexable', 0)
reindex = 0
- portal = getattr(app, portal_name, None)
if portal is None:
if not quiet:
ZopeTestCase._print('Adding %s ERP5 Site ... ' % portal_name)
@@ -903,19 +894,12 @@ class ERP5TypeTestCase(ProcessingNodeTes
reindex=reindex,
create_activities=create_activities,
**extra_constructor_kw )
- portal = app[portal_name]
if not quiet:
ZopeTestCase._print('done (%.3fs)\n' % (time.time() - _start))
# Release locks
transaction.commit()
- self.portal = portal
-
- setSite(portal)
-
- # Make sure skins are correctly set-up (it's not implicitly set up
- # by Acquisition on Zope 2.12 as it is on 2.8)
- portal.setupCurrentSkin(portal.REQUEST)
+ self.portal = portal = self.getPortal()
if len(setup_done) == 1: # make sure it is run only once
try:
@@ -947,8 +931,6 @@ class ERP5TypeTestCase(ProcessingNodeTes
if not quiet:
ZopeTestCase._print('Executing setUpOnce ... ')
start = time.time()
- # setUpOnce method may use self.app and self.portal
- self.app = app
setup_once()
if not quiet:
ZopeTestCase._print('done (%.3fs)\n' % (time.time() - start))
@@ -977,6 +959,7 @@ class ERP5TypeTestCase(ProcessingNodeTes
raise
else:
transaction.commit()
+ del self.portal, self.app
ZopeTestCase.close(app)
except:
f = StringIO()
Modified: erp5/trunk/products/ERP5Type/tests/ProcessingNodeTestCase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/ProcessingNodeTestCase.py?rev=38638&r1=38637&r2=38638&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/ProcessingNodeTestCase.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/ProcessingNodeTestCase.py [utf8] Sat Sep 25 17:48:17 2010
@@ -131,6 +131,8 @@ class ProcessingNodeTestCase(backportUni
def tic(self, verbose=0):
"""Execute pending activities"""
+ # Some tests like testDeferredStyle require that we use self.getPortal()
+ # instead of self.portal in order to setup current skin.
portal_activities = self.getPortal().portal_activities
if 1:
if verbose:
More information about the Erp5-report
mailing list