[Zope-Checkins] SVN: Zope/trunk/ Testing.ZopeTestCase: Include a copy of ZODB.tests.warnhook to silence a DeprecationWarning under Python 2.6.

Stefan H. Holek stefan at epy.co.at
Wed May 13 13:19:10 EDT 2009


Log message for revision 99895:
  Testing.ZopeTestCase: Include a copy of ZODB.tests.warnhook to silence a DeprecationWarning under Python 2.6.
  

Changed:
  U   Zope/trunk/doc/CHANGES.rst
  U   Zope/trunk/src/Testing/ZopeTestCase/__init__.py
  A   Zope/trunk/src/Testing/ZopeTestCase/warnhook.py

-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst	2009-05-13 17:18:20 UTC (rev 99894)
+++ Zope/trunk/doc/CHANGES.rst	2009-05-13 17:19:09 UTC (rev 99895)
@@ -16,6 +16,9 @@
 
 - Launchpad #374719: introducing new ZPublisher events:
   PubStart, PubSuccess, PubFailure, PubAfterTraversal and PubBeforeCommit.
+
+- Testing.ZopeTestCase: Include a copy of ZODB.tests.warnhook to silence
+  a DeprecationWarning under Python 2.6.
   
 Bugs Fixed
 ++++++++++

Modified: Zope/trunk/src/Testing/ZopeTestCase/__init__.py
===================================================================
--- Zope/trunk/src/Testing/ZopeTestCase/__init__.py	2009-05-13 17:18:20 UTC (rev 99894)
+++ Zope/trunk/src/Testing/ZopeTestCase/__init__.py	2009-05-13 17:19:09 UTC (rev 99895)
@@ -43,7 +43,7 @@
 from base import app
 from base import close
 
-from ZODB.tests.warnhook import WarningsHook
+from warnhook import WarningsHook
 from unittest import main
 
 from zopedoctest import ZopeDocTestSuite

Added: Zope/trunk/src/Testing/ZopeTestCase/warnhook.py
===================================================================
--- Zope/trunk/src/Testing/ZopeTestCase/warnhook.py	                        (rev 0)
+++ Zope/trunk/src/Testing/ZopeTestCase/warnhook.py	2009-05-13 17:19:09 UTC (rev 99895)
@@ -0,0 +1,57 @@
+##############################################################################
+#
+# Copyright (c) 2004 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+import warnings
+
+class WarningsHook:
+    """Hook to capture warnings generated by Python.
+
+    The function warnings.showwarning() is designed to be hooked by
+    application code, allowing the application to customize the way it
+    handles warnings.
+
+    This hook captures the unformatted warning information and stores
+    it in a list.  A test can inspect this list after the test is over.
+
+    Issues:
+
+    The warnings module has lots of delicate internal state.  If
+    a warning has been reported once, it won't be reported again.  It
+    may be necessary to extend this class with a mechanism for
+    modifying the internal state so that we can be guaranteed a
+    warning will be reported.
+
+    If Python is run with a warnings filter, e.g. python -Werror,
+    then a test that is trying to inspect a particular warning will
+    fail.  Perhaps this class can be extended to install more-specific
+    filters the test to work anyway.
+    """
+
+    def __init__(self):
+        self.original = None
+        self.warnings = []
+
+    def install(self):
+        self.original = warnings.showwarning
+        warnings.showwarning = self.showwarning
+
+    def uninstall(self):
+        assert self.original is not None
+        warnings.showwarning = self.original
+        self.original = None
+
+    def showwarning(self, message, category, filename, lineno, file=None, line=None):
+        self.warnings.append((str(message), category, filename, lineno))
+
+    def clear(self):
+        self.warnings = []


Property changes on: Zope/trunk/src/Testing/ZopeTestCase/warnhook.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native



More information about the Zope-Checkins mailing list