[Erp5-report] r42905 jm - /erp5/trunk/products/ERP5Type/tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Feb 1 19:31:41 CET 2011
Author: jm
Date: Tue Feb 1 19:31:41 2011
New Revision: 42905
URL: http://svn.erp5.org?rev=42905&view=rev
Log:
Always use dummy MailHost while running unit tests
Modified:
erp5/trunk/products/ERP5Type/tests/ERP5TypeLiveTestCase.py
erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
erp5/trunk/products/ERP5Type/tests/runUnitTest.py
erp5/trunk/products/ERP5Type/tests/utils.py
Modified: erp5/trunk/products/ERP5Type/tests/ERP5TypeLiveTestCase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/ERP5TypeLiveTestCase.py?rev=42905&r1=42904&r2=42905&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/ERP5TypeLiveTestCase.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/ERP5TypeLiveTestCase.py [utf8] Tue Feb 1 19:31:41 2011
@@ -101,6 +101,7 @@ class ERP5TypeLiveTestCase(ERP5TypeTestC
'''Closes the ZODB connection.'''
revert = transaction.get().__hash__() != self.initial_transaction_hash
transaction.abort()
+ self._restoreMailHost()
if revert:
if self.activity_tool_subscribed:
self.portal.portal_activities.subscribe()
@@ -115,6 +116,7 @@ class ERP5TypeLiveTestCase(ERP5TypeTestC
self.activity_tool_subscribed = self.getPortalObject()\
.portal_activities.isSubscribed()
self.portal.portal_activities.unsubscribe()
+ self._setUpDummyMailHost()
def setUp(self):
'''Sets up the fixture. Do not override,
Modified: erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py?rev=42905&r1=42904&r2=42905&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py [utf8] Tue Feb 1 19:31:41 2011
@@ -73,7 +73,7 @@ from Products.ERP5Type.Accessor.Constant
from zLOG import LOG, DEBUG
from Products.ERP5Type.tests.backportUnittest import SetupSiteError
-from Products.ERP5Type.tests.utils import DummyMailHost, parseListeningAddress
+from Products.ERP5Type.tests.utils import DummyMailHostMixin, parseListeningAddress
# Quiet messages when installing products
install_product_quiet = 1
@@ -322,6 +322,20 @@ class ERP5TypeTestCaseMixin(ProcessingNo
if not uf.getUser(user_name):
uf._doAddUser(user_name, 'secret', ['Member'], [])
+ def _setUpDummyMailHost(self):
+ """Replace Original Mail Host by Dummy Mail Host in a non-persistent way
+ """
+ cls = self.portal.MailHost.__class__
+ assert not issubclass(cls, DummyMailHostMixin)
+ cls.__bases__ = (DummyMailHostMixin,) + cls.__bases__
+
+ def _restoreMailHost(self):
+ """Restore original Mail Host
+ """
+ cls = self.portal.MailHost.__class__
+ assert cls.__bases__[0] is DummyMailHostMixin
+ cls.__bases__ = cls.__bases__[1:]
+
def getDefaultSitePreferenceId(self):
"""Default id, usefull method to override
"""
@@ -768,7 +782,6 @@ class ERP5TypeCommandLineTestCase(ERP5Ty
BaseMessage.max_retry = property(lambda self:
self.activity_kw.get('max_retry', 1))
- use_dummy_mail_host = os.environ.get('use_dummy_mail_host', 0)
template_list = self.getBusinessTemplateList()
erp5_catalog_storage = os.environ.get('erp5_catalog_storage',
'erp5_mysql_innodb_catalog')
@@ -801,8 +814,7 @@ class ERP5TypeCommandLineTestCase(ERP5Ty
create_activities=create_activities,
quiet=install_bt5_quiet,
hot_reindexing=hot_reindexing,
- erp5_catalog_storage=erp5_catalog_storage,
- use_dummy_mail_host=use_dummy_mail_host)
+ erp5_catalog_storage=erp5_catalog_storage)
PortalTestCase.setUp(self)
def afterSetUp(self):
@@ -826,13 +838,6 @@ class ERP5TypeCommandLineTestCase(ERP5Ty
connection_name = connection_string_name.replace('_string', '')
getattr(self.portal, connection_name).edit('', connection_string)
- def _setUpDummyMailHost(self):
- """Replace Original Mail Host by Dummy Mail Host.
- """
- if 'MailHost' in self.portal.objectIds():
- self.portal.manage_delObjects(['MailHost'])
- self.portal._setObject('MailHost', DummyMailHost('MailHost'))
-
def _updateConversionServerConfiguration(self):
"""Update conversion server (Oood) at default site preferences.
"""
@@ -909,8 +914,7 @@ class ERP5TypeCommandLineTestCase(ERP5Ty
light_install=1,
create_activities=1,
hot_reindexing=1,
- erp5_catalog_storage='erp5_mysql_innodb_catalog',
- use_dummy_mail_host=0):
+ erp5_catalog_storage='erp5_mysql_innodb_catalog'):
'''
Creates an ERP5 site.
business_template_list must be specified correctly
@@ -978,6 +982,7 @@ class ERP5TypeCommandLineTestCase(ERP5Ty
self.portal = portal = self.getPortal()
if len(setup_done) == 1: # make sure it is run only once
+ self._setUpDummyMailHost()
try:
from Products import DeadlockDebugger
except ImportError:
@@ -997,9 +1002,6 @@ class ERP5TypeCommandLineTestCase(ERP5Ty
'Assignor', 'Author', 'Auditor', 'Associate'], [])
user = uf.getUserById('ERP5TypeTestCase').__of__(uf)
- if use_dummy_mail_host:
- self._setUpDummyMailHost()
-
setup_once = getattr(self, 'setUpOnce', None)
if setup_once is not None and \
not getattr(portal, 'set_up_once_called', 0):
Modified: erp5/trunk/products/ERP5Type/tests/runUnitTest.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/runUnitTest.py?rev=42905&r1=42904&r2=42905&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/runUnitTest.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/runUnitTest.py [utf8] Tue Feb 1 19:31:41 2011
@@ -98,9 +98,6 @@ Options:
Port number used to connect to conversion server
(Oood), the value will be stored at default preference.
By default 8008 is used.
- --use_dummy_mail_host Replace the MailHost by DummyMailHost.
- This prevent the instance send emails.
- By default Original MailHost is used.
--random_activity_priority=[SEED]
Force activities to have a random priority, to make
random failures (due to bad activity dependencies)
@@ -610,7 +607,6 @@ def main(argument_list=None):
"enable_full_indexing=",
"run_only=",
"update_only=",
- "use_dummy_mail_host",
"update_business_templates",
"random_activity_priority=",
"activity_node=",
@@ -698,8 +694,6 @@ def main(argument_list=None):
os.environ["erp5_dump_sql"] = "0"
os.environ["erp5_tests_data_fs_path"] = os.path.join(
live_instance_path, 'var', 'Data.fs')
- elif opt == "--use_dummy_mail_host":
- os.environ["use_dummy_mail_host"] = "1"
elif opt == "--random_activity_priority":
os.environ["random_activity_priority"] = arg or \
str(random.randrange(0, 1<<16))
Modified: erp5/trunk/products/ERP5Type/tests/utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/utils.py?rev=42905&r1=42904&r2=42905&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/utils.py [utf8] Tue Feb 1 19:31:41 2011
@@ -54,25 +54,23 @@ class FileUpload(file):
self.headers = {}
# dummy objects
-class DummyMailHost(MailHost):
+class DummyMailHostMixin(object):
"""Dummy Mail Host that doesn't really send messages and keep a copy in
_last_message attribute.
- To use it, you have to replace existing mailhost in afterSetUp:
-
- if 'MailHost' in portal.objectIds():
- portal.manage_delObjects(['MailHost'])
- portal._setObject('MailHost', DummyMailHost('MailHost'))
"""
_last_message = ()
_previous_message = ()
_message_list = []
- def _send( self, mfrom, mto, messageText, immediate=False ):
+
+ @classmethod
+ def _send(cls, mfrom, mto, messageText, immediate=False):
"""Record message in _last_message."""
- self._previous_message = self._last_message
- self._last_message = (mfrom, mto, messageText)
- self._message_list.append(self._last_message)
+ cls._previous_message = cls._last_message
+ cls._last_message = (mfrom, mto, messageText)
+ cls._message_list.append(cls._last_message)
- def _decodeMessage(self, messageText):
+ @staticmethod
+ def _decodeMessage(messageText):
""" Decode message"""
message_text = messageText
for part in message_from_string(messageText).walk():
@@ -81,15 +79,20 @@ class DummyMailHost(MailHost):
message_text = part.get_payload(decode=1)
return message_text
- def getMessageList(self, decode=True):
+ @classmethod
+ def getMessageList(cls, decode=True):
""" Return message list"""
if decode:
- return [ (m[0], m[1], self._decodeMessage(m[2])) for m in self._message_list]
- return self._message_list
+ return [(m[0], m[1], cls._decodeMessage(m[2])) for m in cls._message_list]
+ return cls._message_list
- def getLastLog(self):
+ @classmethod
+ def getLastLog(cls):
""" Return last message """
- return self._last_message
+ return cls._last_message
+
+class DummyMailHost(DummyMailHostMixin, MailHost):
+ pass
class DummyTranslationService:
More information about the Erp5-report
mailing list