summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_warnings.py
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2008-04-13 13:53:33 (GMT)
committerChristian Heimes <christian@cheimes.de>2008-04-13 13:53:33 (GMT)
commit33fe8093df5c13e41d7dba764279c71c142a4a7d (patch)
tree9a9faea193e40abff9ef66c16a582d897daf6bdf /Lib/test/test_warnings.py
parent659d32df786551044c1265ecb7aac50f7d564c38 (diff)
downloadcpython-33fe8093df5c13e41d7dba764279c71c142a4a7d.zip
cpython-33fe8093df5c13e41d7dba764279c71c142a4a7d.tar.gz
cpython-33fe8093df5c13e41d7dba764279c71c142a4a7d.tar.bz2
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r62260 | gregory.p.smith | 2008-04-10 01:11:56 +0200 (Thu, 10 Apr 2008) | 2 lines better diagnostics ........ r62261 | gregory.p.smith | 2008-04-10 01:16:37 +0200 (Thu, 10 Apr 2008) | 3 lines Raise SystemError when size < 0 is passed into PyString_FromStringAndSize, PyBytes_FromStringAndSize or PyUnicode_FromStringAndSize. [issue2587] ........ r62266 | neal.norwitz | 2008-04-10 07:46:39 +0200 (Thu, 10 Apr 2008) | 5 lines Remove the test file before writing it in case there is no write permission. This might help fix some of the failures on Windows box(es). It doesn't hurt either way and ensure the tests are a little more self contained (ie have less assumptions). ........ r62271 | gregory.p.smith | 2008-04-10 21:50:36 +0200 (Thu, 10 Apr 2008) | 2 lines get rid of assert (size >= 0) now that an explicit if (size < 0) is in the code. ........ r62277 | andrew.kuchling | 2008-04-10 23:27:10 +0200 (Thu, 10 Apr 2008) | 1 line Remove forward-looking statement ........ r62278 | andrew.kuchling | 2008-04-10 23:28:51 +0200 (Thu, 10 Apr 2008) | 1 line Add punctuation ........ r62279 | andrew.kuchling | 2008-04-10 23:29:01 +0200 (Thu, 10 Apr 2008) | 1 line Use issue directive ........ r62289 | thomas.heller | 2008-04-11 15:05:38 +0200 (Fri, 11 Apr 2008) | 3 lines Move backwards compatibility macro to the correct place; PyIndex_Check() was introduced in Python 2.5. ........ r62290 | thomas.heller | 2008-04-11 16:20:26 +0200 (Fri, 11 Apr 2008) | 2 lines Performance improvements. ........ r62293 | christian.heimes | 2008-04-12 15:03:03 +0200 (Sat, 12 Apr 2008) | 2 lines Applied patch #2617 from Frank Wierzbicki wit some extras from me -J and -X are now reserved for Jython and non-standard arguments (e.g. IronPython). I've added some extra comments to make sure the reservation don't get missed in the future. ........ r62294 | georg.brandl | 2008-04-12 20:11:18 +0200 (Sat, 12 Apr 2008) | 2 lines Use absolute path in sys.path. ........ r62295 | georg.brandl | 2008-04-12 20:36:09 +0200 (Sat, 12 Apr 2008) | 2 lines #2615: small consistency update by Jeroen Ruigrok van der Werven. ........ r62296 | georg.brandl | 2008-04-12 21:00:20 +0200 (Sat, 12 Apr 2008) | 2 lines Add Jeroen. ........ r62297 | georg.brandl | 2008-04-12 21:05:37 +0200 (Sat, 12 Apr 2008) | 2 lines Don't offend snake lovers. ........ r62298 | gregory.p.smith | 2008-04-12 22:37:48 +0200 (Sat, 12 Apr 2008) | 2 lines fix compiler warnings ........ r62302 | gregory.p.smith | 2008-04-13 00:24:04 +0200 (Sun, 13 Apr 2008) | 3 lines socket.error inherits from IOError, it no longer needs listing in the all_errors tuple. ........ r62303 | brett.cannon | 2008-04-13 01:44:07 +0200 (Sun, 13 Apr 2008) | 8 lines Re-implement the 'warnings' module in C. This allows for usage of the 'warnings' code in places where it was previously not possible (e.g., the parser). It could also potentially lead to a speed-up in interpreter start-up if the C version of the code (_warnings) is imported over the use of the Python version in key places. Closes issue #1631171. ........ r62304 | gregory.p.smith | 2008-04-13 02:03:25 +0200 (Sun, 13 Apr 2008) | 3 lines Adds a profile-opt target for easy compilation of a python binary using gcc's profile guided optimization. ........ r62305 | brett.cannon | 2008-04-13 02:18:44 +0200 (Sun, 13 Apr 2008) | 3 lines Fix a bug in PySys_HasWarnOption() where it was not properly checking the length of the list storing the warning options. ........ r62306 | brett.cannon | 2008-04-13 02:25:15 +0200 (Sun, 13 Apr 2008) | 2 lines Fix an accidental bug of an non-existent init function. ........ r62308 | andrew.kuchling | 2008-04-13 03:05:59 +0200 (Sun, 13 Apr 2008) | 1 line Mention -J, -X ........ r62311 | benjamin.peterson | 2008-04-13 04:20:05 +0200 (Sun, 13 Apr 2008) | 2 lines Give the "Interactive Interpreter Changes" section in 2.6 whatsnew a unique link name ........ r62313 | brett.cannon | 2008-04-13 04:42:36 +0200 (Sun, 13 Apr 2008) | 3 lines Fix test_warnings by making the state of things more consistent for each test when it is run. ........ r62314 | skip.montanaro | 2008-04-13 05:17:30 +0200 (Sun, 13 Apr 2008) | 2 lines spelling ........ r62315 | georg.brandl | 2008-04-13 09:07:44 +0200 (Sun, 13 Apr 2008) | 2 lines Fix markup. ........ r62319 | christian.heimes | 2008-04-13 11:30:17 +0200 (Sun, 13 Apr 2008) | 1 line Fix compiler warning Include/warnings.h:19:28: warning: no newline at end of file ........ r62320 | christian.heimes | 2008-04-13 11:33:24 +0200 (Sun, 13 Apr 2008) | 1 line Use PyString_InternFromString instead of PyString_FromString for static vars ........ r62321 | christian.heimes | 2008-04-13 11:37:05 +0200 (Sun, 13 Apr 2008) | 1 line Added new files to the pcbuild files ........
Diffstat (limited to 'Lib/test/test_warnings.py')
-rw-r--r--Lib/test/test_warnings.py427
1 files changed, 344 insertions, 83 deletions
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index 8206202..c4fce47 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -1,4 +1,4 @@
-import warnings
+from contextlib import contextmanager
import linecache
import os
from io import StringIO
@@ -8,112 +8,358 @@ from test import test_support
from test import warning_tests
-class TestModule(unittest.TestCase):
+import warnings as original_warnings
+
+sys.modules['_warnings'] = 0
+del sys.modules['warnings']
+
+import warnings as py_warnings
+
+del sys.modules['_warnings']
+del sys.modules['warnings']
+
+import warnings as c_warnings
+
+sys.modules['warnings'] = original_warnings
+
+
+@contextmanager
+def warnings_state(module):
+ """Use a specific warnings implementation in warning_tests."""
+ global __warningregistry__
+ for to_clear in (sys, warning_tests):
+ try:
+ to_clear.__warningregistry__.clear()
+ except AttributeError:
+ pass
+ try:
+ __warningregistry__.clear()
+ except NameError:
+ pass
+ original_warnings = warning_tests.warnings
+ try:
+ warning_tests.warnings = module
+ yield
+ finally:
+ warning_tests.warnings = original_warnings
+
+
+class BaseTest(unittest.TestCase):
+
+ """Basic bookkeeping required for testing."""
+
def setUp(self):
- self.ignored = [w[2].__name__ for w in warnings.filters
- if w[0]=='ignore' and w[1] is None and w[3] is None]
+ # The __warningregistry__ needs to be in a pristine state for tests
+ # to work properly.
+ if '__warningregistry__' in globals():
+ del globals()['__warningregistry__']
+ if hasattr(warning_tests, '__warningregistry__'):
+ del warning_tests.__warningregistry__
+ if hasattr(sys, '__warningregistry__'):
+ del sys.__warningregistry__
+ # The 'warnings' module must be explicitly set so that the proper
+ # interaction between _warnings and 'warnings' can be controlled.
+ sys.modules['warnings'] = self.module
+ super(BaseTest, self).setUp()
+
+ def tearDown(self):
+ sys.modules['warnings'] = original_warnings
+ super(BaseTest, self).tearDown()
- def test_warn_default_category(self):
- with test_support.catch_warning() as w:
- for i in range(4):
- text = 'multi %d' %i # Different text on each call
- warnings.warn(text)
- self.assertEqual(str(w.message), text)
- self.assert_(w.category is UserWarning)
- def test_warn_specific_category(self):
- with test_support.catch_warning() as w:
- text = 'None'
- for category in [DeprecationWarning, FutureWarning,
- PendingDeprecationWarning, RuntimeWarning,
- SyntaxWarning, UserWarning, Warning]:
- if category.__name__ in self.ignored:
- text = 'filtered out' + category.__name__
- warnings.warn(text, category)
- self.assertNotEqual(w.message, text)
+class FilterTests(object):
+
+ """Testing the filtering functionality."""
+
+ def test_error(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("error", category=UserWarning)
+ self.assertRaises(UserWarning, self.module.warn,
+ "FilterTests.test_error")
+
+ def test_ignore(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("ignore", category=UserWarning)
+ self.module.warn("FilterTests.test_ignore", UserWarning)
+ self.assert_(not w.message)
+
+ def test_always(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("always", category=UserWarning)
+ message = "FilterTests.test_always"
+ self.module.warn(message, UserWarning)
+ self.assert_(message, w.message)
+ w.message = None # Reset.
+ self.module.warn(message, UserWarning)
+ self.assert_(w.message, message)
+
+ def test_default(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("default", category=UserWarning)
+ message = UserWarning("FilterTests.test_default")
+ for x in range(2):
+ self.module.warn(message, UserWarning)
+ if x == 0:
+ self.assertEquals(w.message, message)
+ w.reset()
+ elif x == 1:
+ self.assert_(not w.message, "unexpected warning: " + str(w))
else:
- text = 'unfiltered %s' % category.__name__
- warnings.warn(text, category)
- self.assertEqual(str(w.message), text)
- self.assert_(w.category is category)
+ raise ValueError("loop variant unhandled")
+
+ def test_module(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("module", category=UserWarning)
+ message = UserWarning("FilterTests.test_module")
+ self.module.warn(message, UserWarning)
+ self.assertEquals(w.message, message)
+ w.reset()
+ self.module.warn(message, UserWarning)
+ self.assert_(not w.message, "unexpected message: " + str(w))
+
+ def test_once(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("once", category=UserWarning)
+ message = UserWarning("FilterTests.test_once")
+ self.module.warn_explicit(message, UserWarning, "test_warnings.py",
+ 42)
+ self.assertEquals(w.message, message)
+ w.reset()
+ self.module.warn_explicit(message, UserWarning, "test_warnings.py",
+ 13)
+ self.assert_(not w.message)
+ self.module.warn_explicit(message, UserWarning, "test_warnings2.py",
+ 42)
+ self.assert_(not w.message)
- def test_filtering(self):
+ def test_inheritance(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("error", category=Warning)
+ self.assertRaises(UserWarning, self.module.warn,
+ "FilterTests.test_inheritance", UserWarning)
+
+ def test_ordering(self):
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("ignore", category=UserWarning)
+ self.module.filterwarnings("error", category=UserWarning,
+ append=True)
+ w.reset()
+ try:
+ self.module.warn("FilterTests.test_ordering", UserWarning)
+ except UserWarning:
+ self.fail("order handling for actions failed")
+ self.assert_(not w.message)
+
+ def test_filterwarnings(self):
# Test filterwarnings().
# Implicitly also tests resetwarnings().
- with test_support.catch_warning() as w:
- warnings.filterwarnings("error", "", Warning, "", 0)
- self.assertRaises(UserWarning, warnings.warn, 'convert to error')
+ with test_support.catch_warning(self.module) as w:
+ self.module.filterwarnings("error", "", Warning, "", 0)
+ self.assertRaises(UserWarning, self.module.warn, 'convert to error')
- warnings.resetwarnings()
+ self.module.resetwarnings()
text = 'handle normally'
- warnings.warn(text)
+ self.module.warn(text)
self.assertEqual(str(w.message), text)
self.assert_(w.category is UserWarning)
- warnings.filterwarnings("ignore", "", Warning, "", 0)
+ self.module.filterwarnings("ignore", "", Warning, "", 0)
text = 'filtered out'
- warnings.warn(text)
+ self.module.warn(text)
self.assertNotEqual(str(w.message), text)
- warnings.resetwarnings()
- warnings.filterwarnings("error", "hex*", Warning, "", 0)
- self.assertRaises(UserWarning, warnings.warn, 'hex/oct')
+ self.module.resetwarnings()
+ self.module.filterwarnings("error", "hex*", Warning, "", 0)
+ self.assertRaises(UserWarning, self.module.warn, 'hex/oct')
text = 'nonmatching text'
- warnings.warn(text)
+ self.module.warn(text)
self.assertEqual(str(w.message), text)
self.assert_(w.category is UserWarning)
- def test_options(self):
- # Uses the private _setoption() function to test the parsing
- # of command-line warning arguments
- with test_support.catch_warning():
- self.assertRaises(warnings._OptionError,
- warnings._setoption, '1:2:3:4:5:6')
- self.assertRaises(warnings._OptionError,
- warnings._setoption, 'bogus::Warning')
- self.assertRaises(warnings._OptionError,
- warnings._setoption, 'ignore:2::4:-5')
- warnings._setoption('error::Warning::0')
- self.assertRaises(UserWarning, warnings.warn, 'convert to error')
+class CFilterTests(BaseTest, FilterTests):
+ module = c_warnings
+
+class PyFilterTests(BaseTest, FilterTests):
+ module = py_warnings
+
+
+class WarnTests(unittest.TestCase):
+
+ """Test warnings.warn() and warnings.warn_explicit()."""
+
+ def test_message(self):
+ with test_support.catch_warning(self.module) as w:
+ for i in range(4):
+ text = 'multi %d' %i # Different text on each call.
+ self.module.warn(text)
+ self.assertEqual(str(w.message), text)
+ self.assert_(w.category is UserWarning)
def test_filename(self):
- with test_support.catch_warning() as w:
- warning_tests.inner("spam1")
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
- warning_tests.outer("spam2")
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ with warnings_state(self.module):
+ with test_support.catch_warning(self.module) as w:
+ warning_tests.inner("spam1")
+ self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ warning_tests.outer("spam2")
+ self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
def test_stacklevel(self):
# Test stacklevel argument
# make sure all messages are different, so the warning won't be skipped
- with test_support.catch_warning() as w:
- warning_tests.inner("spam3", stacklevel=1)
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
- warning_tests.outer("spam4", stacklevel=1)
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ with warnings_state(self.module):
+ with test_support.catch_warning(self.module) as w:
+ warning_tests.inner("spam3", stacklevel=1)
+ self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ warning_tests.outer("spam4", stacklevel=1)
+ self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+
+ warning_tests.inner("spam5", stacklevel=2)
+ self.assertEqual(os.path.basename(w.filename), "test_warnings.py")
+ warning_tests.outer("spam6", stacklevel=2)
+ self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+
+ warning_tests.inner("spam7", stacklevel=9999)
+ self.assertEqual(os.path.basename(w.filename), "sys")
+
+
+class CWarnTests(BaseTest, WarnTests):
+ module = c_warnings
+
+class PyWarnTests(BaseTest, WarnTests):
+ module = py_warnings
+
+
+class WCmdLineTests(unittest.TestCase):
+
+ def test_improper_input(self):
+ # Uses the private _setoption() function to test the parsing
+ # of command-line warning arguments
+ with test_support.catch_warning(self.module):
+ self.assertRaises(self.module._OptionError,
+ self.module._setoption, '1:2:3:4:5:6')
+ self.assertRaises(self.module._OptionError,
+ self.module._setoption, 'bogus::Warning')
+ self.assertRaises(self.module._OptionError,
+ self.module._setoption, 'ignore:2::4:-5')
+ self.module._setoption('error::Warning::0')
+ self.assertRaises(UserWarning, self.module.warn, 'convert to error')
+
+class CWCmdLineTests(BaseTest, WCmdLineTests):
+ module = c_warnings
+
+class PyWCmdLineTests(BaseTest, WCmdLineTests):
+ module = py_warnings
+
+
+class _WarningsTests(BaseTest):
+
+ """Tests specific to the _warnings module."""
+
+ module = c_warnings
- warning_tests.inner("spam5", stacklevel=2)
- self.assertEqual(os.path.basename(w.filename), "test_warnings.py")
- warning_tests.outer("spam6", stacklevel=2)
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ def test_filter(self):
+ # Everything should function even if 'filters' is not in warnings.
+ with test_support.catch_warning(self.module) as w:
+ self.module.filterwarnings("error", "", Warning, "", 0)
+ self.assertRaises(UserWarning, self.module.warn,
+ 'convert to error')
+ del self.module.filters
+ self.assertRaises(UserWarning, self.module.warn,
+ 'convert to error')
- warning_tests.inner("spam7", stacklevel=9999)
- self.assertEqual(os.path.basename(w.filename), "sys")
+ def test_onceregistry(self):
+ # Replacing or removing the onceregistry should be okay.
+ global __warningregistry__
+ message = UserWarning('onceregistry test')
+ try:
+ original_registry = self.module.onceregistry
+ __warningregistry__ = {}
+ with test_support.catch_warning(self.module) as w:
+ self.module.resetwarnings()
+ self.module.filterwarnings("once", category=UserWarning)
+ self.module.warn_explicit(message, UserWarning, "file", 42)
+ self.failUnlessEqual(w.message, message)
+ w.reset()
+ self.module.warn_explicit(message, UserWarning, "file", 42)
+ self.assert_(not w.message)
+ # Test the resetting of onceregistry.
+ self.module.onceregistry = {}
+ __warningregistry__ = {}
+ self.module.warn('onceregistry test')
+ self.failUnlessEqual(w.message.args, message.args)
+ # Removal of onceregistry is okay.
+ w.reset()
+ del self.module.onceregistry
+ __warningregistry__ = {}
+ self.module.warn_explicit(message, UserWarning, "file", 42)
+ self.failUnless(not w.message)
+ finally:
+ self.module.onceregistry = original_registry
+
+ def test_showwarning_missing(self):
+ # Test that showwarning() missing is okay.
+ text = 'del showwarning test'
+ with test_support.catch_warning(self.module):
+ self.module.filterwarnings("always", category=UserWarning)
+ del self.module.showwarning
+ with test_support.captured_output('stderr') as stream:
+ self.module.warn(text)
+ result = stream.getvalue()
+ self.failUnless(text in result)
+
+ def test_show_warning_output(self):
+ # With showarning() missing, make sure that output is okay.
+ text = 'test show_warning'
+ with test_support.catch_warning(self.module):
+ self.module.filterwarnings("always", category=UserWarning)
+ del self.module.showwarning
+ with test_support.captured_output('stderr') as stream:
+ warning_tests.inner(text)
+ result = stream.getvalue()
+ self.failUnlessEqual(result.count('\n'), 2,
+ "Too many newlines in %r" % result)
+ first_line, second_line = result.split('\n', 1)
+ expected_file = os.path.splitext(warning_tests.__file__)[0] + '.py'
+ path, line, warning_class, message = first_line.split(':')
+ line = int(line)
+ self.failUnlessEqual(expected_file, path)
+ self.failUnlessEqual(warning_class, ' ' + UserWarning.__name__)
+ self.failUnlessEqual(message, ' ' + text)
+ expected_line = ' ' + linecache.getline(path, line).strip() + '\n'
+ assert expected_line
+ self.failUnlessEqual(second_line, expected_line)
class WarningsDisplayTests(unittest.TestCase):
+ """Test the displaying of warnings and the ability to overload functions
+ related to displaying warnings."""
+
def test_formatwarning(self):
message = "msg"
category = Warning
file_name = os.path.splitext(warning_tests.__file__)[0] + '.py'
line_num = 3
file_line = linecache.getline(file_name, line_num).strip()
- expect = "%s:%s: %s: %s\n %s\n" % (file_name, line_num, category.__name__,
- message, file_line)
- self.failUnlessEqual(warnings.formatwarning(message, category,
- file_name, line_num),
- expect)
+ format = "%s:%s: %s: %s\n %s\n"
+ expect = format % (file_name, line_num, category.__name__, message,
+ file_line)
+ self.failUnlessEqual(expect, self.module.formatwarning(message,
+ category, file_name, line_num))
+ # Test the 'line' argument.
+ file_line += " for the win!"
+ expect = format % (file_name, line_num, category.__name__, message,
+ file_line)
+ self.failUnlessEqual(expect, self.module.formatwarning(message,
+ category, file_name, line_num, file_line))
def test_showwarning(self):
file_name = os.path.splitext(warning_tests.__file__)[0] + '.py'
@@ -122,22 +368,37 @@ class WarningsDisplayTests(unittest.TestCase):
message = 'msg'
category = Warning
file_object = StringIO()
- expect = warnings.formatwarning(message, category, file_name, line_num)
- warnings.showwarning(message, category, file_name, line_num,
+ expect = self.module.formatwarning(message, category, file_name,
+ line_num)
+ self.module.showwarning(message, category, file_name, line_num,
file_object)
self.failUnlessEqual(file_object.getvalue(), expect)
+ # Test 'line' argument.
+ expected_file_line += "for the win!"
+ expect = self.module.formatwarning(message, category, file_name,
+ line_num, expected_file_line)
+ file_object = StringIO()
+ self.module.showwarning(message, category, file_name, line_num,
+ file_object, expected_file_line)
+ self.failUnlessEqual(expect, file_object.getvalue())
+
+class CWarningsDisplayTests(BaseTest, WarningsDisplayTests):
+ module = c_warnings
+
+class PyWarningsDisplayTests(BaseTest, WarningsDisplayTests):
+ module = py_warnings
+
+def test_main():
+ test_support.run_unittest(CFilterTests,
+ PyFilterTests,
+ CWarnTests,
+ PyWarnTests,
+ CWCmdLineTests, PyWCmdLineTests,
+ _WarningsTests,
+ CWarningsDisplayTests, PyWarningsDisplayTests,
+ )
-def test_main(verbose=None):
- # Obscure hack so that this test passes after reloads or repeated calls
- # to test_main (regrtest -R).
- if '__warningregistry__' in globals():
- del globals()['__warningregistry__']
- if hasattr(warning_tests, '__warningregistry__'):
- del warning_tests.__warningregistry__
- if hasattr(sys, '__warningregistry__'):
- del sys.__warningregistry__
- test_support.run_unittest(TestModule, WarningsDisplayTests)
if __name__ == "__main__":
- test_main(verbose=True)
+ test_main()