[CMF-checkins] CVS: Products/CMFCore/tests/base - testcase.py:1.16

Tres Seaver tseaver at palladion.com
Fri Jul 15 22:31:03 EDT 2005


Update of /cvs-repository/Products/CMFCore/tests/base
In directory cvs.zope.org:/tmp/cvs-serv15502/CMFCore/tests/base

Modified Files:
	testcase.py 
Log Message:


 - Forward-ported  testing framework to suppress / examine output from
   warnings module and from zLOG from 1.5 branch.


=== Products/CMFCore/tests/base/testcase.py 1.15 => 1.16 ===
--- Products/CMFCore/tests/base/testcase.py:1.15	Wed Jun 15 10:17:38 2005
+++ Products/CMFCore/tests/base/testcase.py	Fri Jul 15 22:31:02 2005
@@ -13,11 +13,64 @@
 from AccessControl.SecurityManagement import noSecurityManager
 from AccessControl.SecurityManager import setSecurityPolicy
 from Testing.makerequest import makerequest
+import zLOG
 import transaction
 
 from dummy import DummyFolder
 from security import AnonymousUser
 from security import PermissiveSecurityPolicy
+
+class LogInterceptor:
+
+    _old_log_write = None
+    logged = None
+
+    def _catch_log_errors( self, ignored_level=zLOG.PROBLEM ):
+
+        if self._old_log_write is not None:
+            return
+
+        def log_write(subsystem, severity, summary, detail, error):
+            if severity > ignored_level:
+                assert 0, "%s(%s): %s" % (subsystem, severity, summary)
+            if self.logged is None:
+                self.logged = []
+            self.logged.append( ( subsystem, severity, summary, detail ) )
+
+        self._old_log_write = zLOG.log_write
+        zLOG.log_write = log_write
+
+    def _ignore_log_errors( self ):
+
+        if self._old_log_write is None:
+            return
+
+        zLOG.log_write = self._old_log_write
+        del self._old_log_write
+
+class WarningInterceptor:
+
+    _old_stderr = None
+    _our_stderr_stream = None
+
+    def _trap_warning_output( self ):
+
+        if self._old_stderr is not None:
+            return
+
+        import sys
+        from StringIO import StringIO
+
+        self._old_stderr = sys.stderr
+        self._our_stderr_stream = sys.stderr = StringIO()
+
+    def _free_warning_output( self ):
+
+        if self._old_stderr is None:
+            return
+
+        import sys
+        sys.stderr = self._old_stderr
 
 
 class TransactionalTest( TestCase ):



More information about the CMF-checkins mailing list