[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - use catch_warnings context manager instead of WarningInterceptor
Yvo Schubbe
cvs-admin at zope.org
Wed May 23 09:38:07 UTC 2012
Log message for revision 126450:
- use catch_warnings context manager instead of WarningInterceptor
Changed:
U Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py
U Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_FSPythonScript.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py 2012-05-23 09:36:26 UTC (rev 126449)
+++ Products.CMFCore/trunk/Products/CMFCore/exportimport/tests/test_typeinfo.py 2012-05-23 09:38:04 UTC (rev 126450)
@@ -19,20 +19,18 @@
from OFS.Folder import Folder
from zope.component import getSiteManager
-from Products.GenericSetup.testing import BodyAdapterTestCase
-from Products.GenericSetup.tests.common import BaseRegistryTests
-from Products.GenericSetup.tests.common import DummyExportContext
-from Products.GenericSetup.tests.common import DummyImportContext
-
from Products.CMFCore.interfaces import ITypesTool
from Products.CMFCore.permissions import AccessContentsInformation
from Products.CMFCore.permissions import ModifyPortalContent
from Products.CMFCore.permissions import View
from Products.CMFCore.testing import ExportImportZCMLLayer
-from Products.CMFCore.tests.base.testcase import WarningInterceptor
from Products.CMFCore.TypesTool import FactoryTypeInformation
from Products.CMFCore.TypesTool import ScriptableTypeInformation
from Products.CMFCore.TypesTool import TypesTool
+from Products.GenericSetup.testing import BodyAdapterTestCase
+from Products.GenericSetup.tests.common import BaseRegistryTests
+from Products.GenericSetup.tests.common import DummyExportContext
+from Products.GenericSetup.tests.common import DummyImportContext
_FTI_BODY = """\
<?xml version="1.0"?>
@@ -321,8 +319,7 @@
"""
-class TypeInformationXMLAdapterTests(
- BodyAdapterTestCase, unittest.TestCase, WarningInterceptor):
+class TypeInformationXMLAdapterTests(BodyAdapterTestCase, unittest.TestCase):
layer = ExportImportZCMLLayer
@@ -361,15 +358,10 @@
def setUp(self):
self._obj = FactoryTypeInformation('foo_fti')
self._BODY = _FTI_BODY
- self._trap_warning_output()
- def tearDown(self):
- self._free_warning_output()
+class TypesToolXMLAdapterTests(BodyAdapterTestCase, unittest.TestCase):
-class TypesToolXMLAdapterTests(
- BodyAdapterTestCase, unittest.TestCase, WarningInterceptor):
-
layer = ExportImportZCMLLayer
def _getTargetClass(self):
@@ -384,21 +376,10 @@
def setUp(self):
self._obj = TypesTool()
self._BODY = _TYPESTOOL_BODY
- self._trap_warning_output()
- def tearDown(self):
- self._free_warning_output()
+class _TypeInfoSetup(BaseRegistryTests):
-class _TypeInfoSetup(BaseRegistryTests, WarningInterceptor):
-
- def setUp(self):
- BaseRegistryTests.setUp(self)
- self._trap_warning_output()
-
- def tearDown(self):
- self._free_warning_output()
-
def _initSite(self, foo=0):
site = Folder(id='site').__of__(self.app)
ttool = TypesTool()
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py 2012-05-23 09:36:26 UTC (rev 126449)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/base/testcase.py 2012-05-23 09:38:04 UTC (rev 126450)
@@ -66,29 +66,6 @@
self.installed = tuple([s for s in self.installed if s != subsystem])
-class WarningInterceptor:
-
- _old_stderr = None
- _our_stderr_stream = None
-
- def _trap_warning_output(self):
-
- if self._old_stderr is not None:
- return
-
- 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
-
- sys.stderr = self._old_stderr
-
-
class TransactionalTest(unittest.TestCase):
layer = ZopeLite
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py 2012-05-23 09:36:26 UTC (rev 126449)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_ActionProviderBase.py 2012-05-23 09:38:04 UTC (rev 126450)
@@ -16,6 +16,8 @@
import unittest
import Testing
+import warnings
+
from zope.component import getSiteManager
from zope.interface.verify import verifyClass
from zope.testing.cleanup import cleanUp
@@ -25,7 +27,6 @@
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
from Products.CMFCore.tests.base.testcase import SecurityTest
-from Products.CMFCore.tests.base.testcase import WarningInterceptor
#
# We have to import these here to make the "ugly sharing" test case go.
@@ -60,10 +61,9 @@
or 0)
-class ActionProviderBaseTests(SecurityTest, WarningInterceptor):
+class ActionProviderBaseTests(SecurityTest):
def setUp(self):
- self._trap_warning_output()
SecurityTest.setUp(self)
self.site = DummySite('site').__of__(self.app)
sm = getSiteManager()
@@ -73,7 +73,6 @@
def tearDown(self):
cleanUp()
SecurityTest.tearDown(self)
- self._free_warning_output()
def _makeProvider(self, dummy=0):
@@ -213,21 +212,23 @@
def idify(x):
return id(x)
- old_ids = one_ids = map(idify, one.listActions())
- another_ids = map(idify, another.listActions())
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ old_ids = one_ids = map(idify, one.listActions())
+ another_ids = map(idify, another.listActions())
- self.assertEqual(one_ids, another_ids)
+ self.assertEqual(one_ids, another_ids)
- one.changeActions({'id_0': 'different_id',
- 'name_0': 'A Different Title',
- 'action_0': 'arise_shine',
- 'condition_0': 'always',
- 'permissions_0': 'granted',
- 'category_0': 'quality',
- 'visible_0': 1})
+ one.changeActions({'id_0': 'different_id',
+ 'name_0': 'A Different Title',
+ 'action_0': 'arise_shine',
+ 'condition_0': 'always',
+ 'permissions_0': 'granted',
+ 'category_0': 'quality',
+ 'visible_0': 1})
- one_ids = map(idify, one.listActions())
- another_ids = map(idify, another.listActions())
+ one_ids = map(idify, one.listActions())
+ another_ids = map(idify, another.listActions())
self.assertFalse(one_ids == another_ids)
self.assertEqual(old_ids, another_ids)
@@ -238,20 +239,24 @@
'icon': ''}]
apb = self.site._setObject('portal_apb', self._makeProvider(1))
- rval = apb.listActionInfos()
- self.assertEqual(rval, [])
- rval = apb.listActionInfos(check_visibility=0)
- self.assertEqual(rval, wanted)
- rval = apb.listActionInfos('foo/another_id', check_visibility=0)
- self.assertEqual(rval, [])
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ rval = apb.listActionInfos()
+ self.assertEqual(rval, [])
+ rval = apb.listActionInfos(check_visibility=0)
+ self.assertEqual(rval, wanted)
+ rval = apb.listActionInfos('foo/another_id', check_visibility=0)
+ self.assertEqual(rval, [])
def test_getActionObject(self):
apb = self.site._setObject('portal_apb', self._makeProvider(1))
- rval = apb.getActionObject('object/an_id')
- self.assertEqual(rval, apb._actions[0])
- rval = apb.getActionObject('object/not_existing_id')
- self.assertEqual(rval, None)
- self.assertRaises(ValueError, apb.getActionObject, 'wrong_format')
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ rval = apb.getActionObject('object/an_id')
+ self.assertEqual(rval, apb._actions[0])
+ rval = apb.getActionObject('object/not_existing_id')
+ self.assertEqual(rval, None)
+ self.assertRaises(ValueError, apb.getActionObject, 'wrong_format')
def test_getActionInfo(self):
wanted = {'id': 'an_id', 'title': 'A Title', 'description': '',
@@ -260,22 +265,25 @@
'icon': ''}
apb = self.site._setObject('portal_apb', self._makeProvider(1))
- rval = apb.getActionInfo(('object/an_id',))
- self.assertEqual(rval, wanted)
- rval = apb.getActionInfo('object/an_id')
- self.assertEqual(rval, wanted)
- self.assertRaises(ValueError, apb.getActionInfo, 'object/an_id',
- check_visibility=1)
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ rval = apb.getActionInfo(('object/an_id',))
+ self.assertEqual(rval, wanted)
+ rval = apb.getActionInfo('object/an_id')
+ self.assertEqual(rval, wanted)
+ self.assertRaises(ValueError, apb.getActionInfo, 'object/an_id',
+ check_visibility=1)
- # The following is nasty, but I want to make sure the ValueError
- # carries some useful information
- INVALID_ID = 'invalid_id'
- try:
- rval = apb.getActionInfo('object/%s' % INVALID_ID)
- except ValueError, e:
- message = e.args[0]
- detail = '"%s" does not offer action "%s"' % (message, INVALID_ID)
- self.assertTrue(message.find(INVALID_ID) != -1, detail)
+ # The following is nasty, but I want to make sure the ValueError
+ # carries some useful information
+ INVALID_ID = 'invalid_id'
+ try:
+ rval = apb.getActionInfo('object/%s' % INVALID_ID)
+ except ValueError, e:
+ message = e.args[0]
+ detail = '"%s" does not offer action "%s"' % (message,
+ INVALID_ID)
+ self.assertTrue(message.find(INVALID_ID) != -1, detail)
def test_suite():
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py 2012-05-23 09:36:26 UTC (rev 126449)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_DirectoryView.py 2012-05-23 09:38:04 UTC (rev 126450)
@@ -17,6 +17,7 @@
import Testing
import sys
+import warnings
from os import mkdir
from os import remove
from os.path import join
@@ -27,11 +28,10 @@
from Products.CMFCore.tests import _globals
from Products.CMFCore.tests.base.dummy import DummyFolder
from Products.CMFCore.tests.base.testcase import FSDVTest
-from Products.CMFCore.tests.base.testcase import WarningInterceptor
from Products.CMFCore.tests.base.testcase import WritableFSDVTest
-class DirectoryViewPathTests(unittest.TestCase, WarningInterceptor):
+class DirectoryViewPathTests(unittest.TestCase):
"""
These test that, no matter what is stored in their dirpath,
FSDV's will do their best to find an appropriate skin
@@ -46,9 +46,6 @@
self.ob = DummyFolder()
addDirectoryViews(self.ob, 'fake_skins', _globals)
- def tearDown(self):
- self._free_warning_output()
-
def test__generateKey(self):
from Products.CMFCore.DirectoryView import _generateKey
@@ -77,18 +74,17 @@
# Test we do nothing if given a really wacky path
def test_UnhandleableExpandPath(self):
- from Products.CMFCore import DirectoryView
-
- self._trap_warning_output()
file = mktemp()
- self.ob.fake_skin.manage_properties(file)
- self.assertEqual(self.ob.fake_skin.objectIds(), [])
- # Check that a warning was raised.
- warnings = [t[0] for t in DirectoryView.__warningregistry__]
- text = ('DirectoryView fake_skin refers to a non-existing path %r'
- % file)
- self.assertTrue(text in warnings)
- self.assertTrue(text in self._our_stderr_stream.getvalue())
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter('always')
+ self.ob.fake_skin.manage_properties(file)
+ self.assertEqual(self.ob.fake_skin.objectIds(), [])
+ # Check that a warning was raised.
+ self.assertEqual(len(w), 1)
+ self.assertTrue(issubclass(w[-1].category, UserWarning))
+ text = ('DirectoryView fake_skin refers to a non-existing path %r'
+ % file)
+ self.assertTrue(text in str(w[-1].message))
# this test tests that registerDirectory creates keys in the right format.
def test_registerDirectoryKeys(self):
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_FSPythonScript.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_FSPythonScript.py 2012-05-23 09:36:26 UTC (rev 126449)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_FSPythonScript.py 2012-05-23 09:38:04 UTC (rev 126450)
@@ -18,6 +18,7 @@
ZopeTestCase.installProduct('PythonScripts', 1)
import os
+import warnings
from os.path import join
from sys import exc_info
from thread import start_new_thread
@@ -34,7 +35,6 @@
from Products.CMFCore.FSPythonScript import FSPythonScript
from Products.CMFCore.tests.base.testcase import FSDVTest
from Products.CMFCore.tests.base.testcase import SecurityTest
-from Products.CMFCore.tests.base.testcase import WarningInterceptor
class FSPSMaker(FSDVTest):
@@ -273,19 +273,16 @@
self._stacklevel = stacklevel
def __call__(self):
- import warnings
warnings.warn('foo', stacklevel=self._stacklevel)
-class FSPythonScriptWarningsTests(SecurityTest, FSPSMaker, WarningInterceptor):
+class FSPythonScriptWarningsTests(SecurityTest, FSPSMaker):
def setUp(self):
SecurityTest.setUp(self)
FSPSMaker.setUp(self)
- self._trap_warning_output()
def tearDown(self):
- self._free_warning_output()
FSPSMaker.tearDown(self)
SecurityTest.tearDown(self)
@@ -297,7 +294,10 @@
# in warn_explicit
# if module[-3:].lower() == ".py":
# TypeError: unsubscriptable object
- self.app.warn1()
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ self.app.warn_me()
+ self.app.warn1()
def test_suite():
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py 2012-05-23 09:36:26 UTC (rev 126449)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py 2012-05-23 09:38:04 UTC (rev 126450)
@@ -15,13 +15,14 @@
import unittest
+import warnings
+
from AccessControl.Permission import Permission
from zope.component import getSiteManager
from Products.CMFCore.interfaces import IWorkflowTool
from Products.CMFCore.testing import FunctionalZCMLLayer
from Products.CMFCore.tests.base.testcase import SecurityTest
-from Products.CMFCore.tests.base.testcase import WarningInterceptor
class TypesToolTests(unittest.TestCase):
@@ -257,15 +258,9 @@
self.assertEqual(folder.page2.portal_type, 'Baz')
-class TypeInfoTests(WarningInterceptor):
+class TypeInfoTests(object):
# Subclass must define _getTargetClass
- def setUp(self):
- self._trap_warning_output()
-
- def tearDown(self):
- self._free_warning_output()
-
def _makeOne(self, id='test', **kw):
return self._getTargetClass()(id, **kw)
@@ -285,15 +280,20 @@
verifyObject(ITypeInformation, self._makeOne())
def test_construction(self):
- ti = self._makeOne('Foo', description='Description', meta_type='Foo',
- icon='foo.gif')
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ ti = self._makeOne('Foo', description='Description',
+ meta_type='Foo', icon='foo.gif')
self.assertEqual(ti.getId(), 'Foo')
self.assertEqual(ti.Title(), 'Foo')
self.assertEqual(ti.Description(), 'Description')
self.assertEqual(ti.Metatype(), 'Foo')
self.assertEqual(ti.getIconExprObject().text,
'string:${portal_url}/foo.gif')
- self.assertEqual(ti.getIcon(), 'foo.gif')
+
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ self.assertEqual(ti.getIcon(), 'foo.gif')
self.assertEqual(ti.immediate_view, '')
ti = self._makeOne('Foo', immediate_view='foo_view')
More information about the checkins
mailing list