[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