[Erp5-report] r31382 leonardo - in /erp5/trunk/products: ERP5/tests/ ERP5Catalog/tests/ ERP...
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 17 23:35:59 CET 2009
Author: leonardo
Date: Thu Dec 17 23:35:59 2009
New Revision: 31382
URL: http://svn.erp5.org?rev=31382&view=rev
Log:
Replace LogInterceptor with one that behaves more like the one on CMF 1.5
Modified:
erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
erp5/trunk/products/ERP5Catalog/tests/testArchive.py
erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
erp5/trunk/products/ERP5Type/tests/testERP5Type.py
erp5/trunk/products/ERP5Type/tests/testFolder.py
erp5/trunk/products/ERP5Type/tests/testFolderMigration.py
erp5/trunk/products/ERP5Type/tests/testPerformance.py
erp5/trunk/products/ERP5Type/tests/testTransactionalVariable.py
erp5/trunk/products/ERP5Type/tests/testXMLMatrix.py
erp5/trunk/products/ERP5Type/tests/utils.py
Modified: erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBusinessTemplate.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBusinessTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBusinessTemplate.py [utf8] Thu Dec 17 23:35:59 2009
@@ -40,7 +40,7 @@
from urllib import pathname2url
from Products.ERP5Type.Globals import PersistentMapping
from Products.CMFCore.Expression import Expression
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
import shutil
import os
Modified: erp5/trunk/products/ERP5Catalog/tests/testArchive.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testArchive.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testArchive.py [utf8] (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testArchive.py [utf8] Thu Dec 17 23:35:59 2009
@@ -35,7 +35,7 @@
from AccessControl.SecurityManagement import newSecurityManager
from zLOG import LOG
from DateTime import DateTime
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Testing.ZopeTestCase.PortalTestCase import PortalTestCase
from Products.ERP5Type.tests.utils import createZODBPythonScript, \
getExtraSqlConnectionStringList
Modified: erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py [utf8] (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py [utf8] Thu Dec 17 23:35:59 2009
@@ -36,7 +36,7 @@
from AccessControl.SecurityManagement import newSecurityManager
from zLOG import LOG
from DateTime import DateTime
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Products.ERP5Type.tests.utils import createZODBPythonScript, todo_erp5, \
getExtraSqlConnectionStringList
from Products.ZSQLCatalog.ZSQLCatalog import HOT_REINDEXING_FINISHED_STATE,\
Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] Thu Dec 17 23:35:59 2009
@@ -39,7 +39,7 @@
from Products.ERP5Type.tests.utils import DummyLocalizer
from zLOG import LOG, INFO
from Products.CMFCore.Expression import Expression
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Products.CMFCore.WorkflowCore import WorkflowException
from Products.ERP5Type.Accessor.Constant import PropertyGetter as ConstantGetter
from Products.ERP5Type.Base import _aq_reset
Modified: erp5/trunk/products/ERP5Type/tests/testFolder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testFolder.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testFolder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testFolder.py [utf8] Thu Dec 17 23:35:59 2009
@@ -30,7 +30,7 @@
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from zLOG import LOG
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Products.ERP5Type.tests.utils import createZODBPythonScript
from Products.ERP5Type.ERP5Type import ERP5TypeInformation
from Products.ERP5Type.Cache import clearCache
Modified: erp5/trunk/products/ERP5Type/tests/testFolderMigration.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testFolderMigration.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testFolderMigration.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testFolderMigration.py [utf8] Thu Dec 17 23:35:59 2009
@@ -33,7 +33,7 @@
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from zLOG import LOG
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Products.ERP5Type.Cache import clearCache
class TestFolderMigration(ERP5TypeTestCase, LogInterceptor):
Modified: erp5/trunk/products/ERP5Type/tests/testPerformance.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testPerformance.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testPerformance.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testPerformance.py [utf8] Thu Dec 17 23:35:59 2009
@@ -34,7 +34,7 @@
from DateTime import DateTime
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from zLOG import LOG
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
import os, hotshot
# Define variable to chek if performance are good or not
Modified: erp5/trunk/products/ERP5Type/tests/testTransactionalVariable.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testTransactionalVariable.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testTransactionalVariable.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testTransactionalVariable.py [utf8] Thu Dec 17 23:35:59 2009
@@ -31,7 +31,7 @@
from Testing import ZopeTestCase
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from zLOG import LOG
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
try:
Modified: erp5/trunk/products/ERP5Type/tests/testXMLMatrix.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testXMLMatrix.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testXMLMatrix.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testXMLMatrix.py [utf8] Thu Dec 17 23:35:59 2009
@@ -31,7 +31,7 @@
from Testing import ZopeTestCase
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
-from Products.CMFCore.tests.base.testcase import LogInterceptor
+from Products.ERP5Type.tests.utils import LogInterceptor
from Products.ERP5Type.Utils import cartesianProduct
from AccessControl.SecurityManagement import newSecurityManager
from zLOG import PROBLEM
Modified: erp5/trunk/products/ERP5Type/tests/utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/utils.py?rev=31382&r1=31381&r2=31382&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/utils.py [utf8] Thu Dec 17 23:35:59 2009
@@ -30,8 +30,10 @@
"""
import os
+import logging
import transaction
+import zLOG
import Products.ERP5Type
from Products.MailHost.MailHost import MailHost
from email import message_from_string
@@ -270,3 +272,68 @@
# Test cases using this decorator must extend backportUnittest.TestCase
todo_erp5 = backportUnittest.skip("TODO ERP5")
+class LogInterceptor:
+ '''Replacement for Products.CMFCore.tests.base.testcase.LogInterceptor
+
+ On CMF 1, LogInterceptor would bail if a log record with too high
+ severity would pass through, and it would monkey-patch zLOG.log_write to do
+ its job, meaning it would take on all Zope messages.
+
+ The CMF 2 LogInterceptor plugs itself as a filter on the requested logger
+ (the root logger, by default), which meant it would only be called on
+ log records at that exact subsystem (not lower subsystems), and it no
+ longer raises AssertionError on messages with high severity.
+
+ This replacement restore the original semantics while keeping close to the
+ new implementation, so it can act on both "zLOG" and "logging" calls.
+ '''
+ logged = None
+ installed = ()
+ level = 0
+
+ def _zLOGLSeverityToLoggingLevel(self, severity):
+ '''Given a zLOG severity, return a logging level
+ '''
+ # inspired by zLOG.EventLogger.log_write
+ from zLOG.EventLogger import zlog_to_pep282_severity_cache_get
+ from zLOG.EventLogger import zlog_to_pep282_severity
+ level = (zlog_to_pep282_severity_cache_get(severity) or
+ zlog_to_pep282_severity(severity))
+ return level
+
+ def _catch_log_errors(self, ignored_level=zLOG.WARNING, subsystem=''):
+ if subsystem in self.installed:
+ raise ValueError, 'Already installed filter!'
+
+ root_logger = logging.getLogger(subsystem)
+ self.installed += (subsystem,)
+ self.level = self._zLOGLSeverityToLoggingLevel(ignored_level)
+ # attach to a handler instead of a logger, since logger filters are
+ # not always called. See http://bugs.python.org/issue7535
+ for handler in root_logger.handlers:
+ handler.addFilter(self)
+ break
+ else:
+ raise ValueError('No handlers to attach in logging subsystem %r' %
+ subsystem or 'root')
+
+ def filter(self, record):
+ if record.levelno > self.level:
+ raise AssertionError("%s(%s): %s" %
+ (record.name,
+ record.levelname,
+ record.getMessage()))
+ if self.logged is None:
+ self.logged = []
+ self.logged.append(record)
+ return False
+
+ def _ignore_log_errors(self, subsystem=''):
+
+ if subsystem not in self.installed:
+ return
+
+ root_logger = logging.getLogger(subsystem)
+ for handler in root_logger.handlers:
+ handler.removeFilter(self)
+ self.installed = tuple([s for s in self.installed if s != subsystem])
More information about the Erp5-report
mailing list