aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_warnings.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_warnings.py')
-rw-r--r--Lib/test/test_warnings.py142
1 files changed, 83 insertions, 59 deletions
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index 087bf3d871a..199e6fca3d9 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -72,64 +72,69 @@ class FilterTests(object):
"""Testing the filtering functionality."""
def test_error(self):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(module=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 support.catch_warning(module=self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
self.module.resetwarnings()
self.module.filterwarnings("ignore", category=UserWarning)
self.module.warn("FilterTests.test_ignore", UserWarning)
self.assertEquals(len(w), 0)
def test_always(self):
- with support.catch_warning(module=self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=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)
+ self.assert_(message, w[-1].message)
self.module.warn(message, UserWarning)
- self.assert_(w.message, message)
+ self.assert_(w[-1].message, message)
def test_default(self):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=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()
+ self.assertEquals(w[-1].message, message)
+ del w[:]
elif x == 1:
- self.assert_(not len(w), "unexpected warning: " + str(w))
+ self.assertEquals(len(w), 0)
else:
raise ValueError("loop variant unhandled")
def test_module(self):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=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.assertEquals(w[-1].message, message)
+ del w[:]
self.module.warn(message, UserWarning)
- self.assert_(not len(w), "unexpected message: " + str(w))
+ self.assertEquals(len(w), 0)
def test_once(self):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=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.assertEquals(w[-1].message, message)
+ del w[:]
self.module.warn_explicit(message, UserWarning, "test_warnings.py",
13)
self.assertEquals(len(w), 0)
@@ -138,19 +143,20 @@ class FilterTests(object):
self.assertEquals(len(w), 0)
def test_inheritance(self):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(module=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 support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
self.module.resetwarnings()
self.module.filterwarnings("ignore", category=UserWarning)
self.module.filterwarnings("error", category=UserWarning,
append=True)
- w.reset()
+ del w[:]
try:
self.module.warn("FilterTests.test_ordering", UserWarning)
except UserWarning:
@@ -160,28 +166,29 @@ class FilterTests(object):
def test_filterwarnings(self):
# Test filterwarnings().
# Implicitly also tests resetwarnings().
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
self.module.filterwarnings("error", "", Warning, "", 0)
self.assertRaises(UserWarning, self.module.warn, 'convert to error')
self.module.resetwarnings()
text = 'handle normally'
self.module.warn(text)
- self.assertEqual(str(w.message), text)
- self.assert_(w.category is UserWarning)
+ self.assertEqual(str(w[-1].message), text)
+ self.assert_(w[-1].category is UserWarning)
self.module.filterwarnings("ignore", "", Warning, "", 0)
text = 'filtered out'
self.module.warn(text)
- self.assertNotEqual(str(w.message), text)
+ self.assertNotEqual(str(w[-1].message), text)
self.module.resetwarnings()
self.module.filterwarnings("error", "hex*", Warning, "", 0)
self.assertRaises(UserWarning, self.module.warn, 'hex/oct')
text = 'nonmatching text'
self.module.warn(text)
- self.assertEqual(str(w.message), text)
- self.assert_(w.category is UserWarning)
+ self.assertEqual(str(w[-1].message), text)
+ self.assert_(w[-1].category is UserWarning)
class CFilterTests(BaseTest, FilterTests):
module = c_warnings
@@ -195,12 +202,13 @@ class WarnTests(unittest.TestCase):
"""Test warnings.warn() and warnings.warn_explicit()."""
def test_message(self):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=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)
+ self.assertEqual(str(w[-1].message), text)
+ self.assert_(w[-1].category is UserWarning)
# Issue 3639
def test_warn_nonstandard_types(self):
@@ -210,35 +218,45 @@ class WarnTests(unittest.TestCase):
self.module.warn(ob)
# Don't directly compare objects since
# ``Warning() != Warning()``.
- self.assertEquals(str(w.message), str(UserWarning(ob)))
+ self.assertEquals(str(w[-1].message), str(UserWarning(ob)))
def test_filename(self):
with warnings_state(self.module):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
warning_tests.inner("spam1")
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "warning_tests.py")
warning_tests.outer("spam2")
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ self.assertEqual(os.path.basename(w[-1].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 warnings_state(self.module):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
warning_tests.inner("spam3", stacklevel=1)
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "warning_tests.py")
warning_tests.outer("spam4", stacklevel=1)
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "warning_tests.py")
warning_tests.inner("spam5", stacklevel=2)
- self.assertEqual(os.path.basename(w.filename), "test_warnings.py")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "test_warnings.py")
warning_tests.outer("spam6", stacklevel=2)
- self.assertEqual(os.path.basename(w.filename), "warning_tests.py")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "warning_tests.py")
warning_tests.outer("spam6.5", stacklevel=3)
- self.assertEqual(os.path.basename(w.filename), "test_warnings.py")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "test_warnings.py")
warning_tests.inner("spam7", stacklevel=9999)
- self.assertEqual(os.path.basename(w.filename), "sys")
+ self.assertEqual(os.path.basename(w[-1].filename),
+ "sys")
def test_missing_filename_not_main(self):
# If __file__ is not specified and __main__ is not the module name,
@@ -247,9 +265,10 @@ class WarnTests(unittest.TestCase):
try:
del warning_tests.__file__
with warnings_state(self.module):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
warning_tests.inner("spam8", stacklevel=1)
- self.assertEqual(w.filename, warning_tests.__name__)
+ self.assertEqual(w[-1].filename, warning_tests.__name__)
finally:
warning_tests.__file__ = filename
@@ -264,9 +283,10 @@ class WarnTests(unittest.TestCase):
del warning_tests.__file__
warning_tests.__name__ = '__main__'
with warnings_state(self.module):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
warning_tests.inner('spam9', stacklevel=1)
- self.assertEqual(w.filename, sys.argv[0])
+ self.assertEqual(w[-1].filename, sys.argv[0])
finally:
warning_tests.__file__ = filename
warning_tests.__name__ = module_name
@@ -282,9 +302,10 @@ class WarnTests(unittest.TestCase):
warning_tests.__name__ = '__main__'
del sys.argv
with warnings_state(self.module):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
warning_tests.inner('spam10', stacklevel=1)
- self.assertEqual(w.filename, '__main__')
+ self.assertEqual(w[-1].filename, '__main__')
finally:
warning_tests.__file__ = filename
warning_tests.__name__ = module_name
@@ -302,9 +323,10 @@ class WarnTests(unittest.TestCase):
warning_tests.__name__ = '__main__'
sys.argv = ['']
with warnings_state(self.module):
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=self.module) as w:
warning_tests.inner('spam11', stacklevel=1)
- self.assertEqual(w.filename, '__main__')
+ self.assertEqual(w[-1].filename, '__main__')
finally:
warning_tests.__file__ = file_name
warning_tests.__name__ = module_name
@@ -337,7 +359,7 @@ class WCmdLineTests(unittest.TestCase):
def test_improper_input(self):
# Uses the private _setoption() function to test the parsing
# of command-line warning arguments
- with support.catch_warning(self.module):
+ with original_warnings.catch_warnings(module=self.module):
self.assertRaises(self.module._OptionError,
self.module._setoption, '1:2:3:4:5:6')
self.assertRaises(self.module._OptionError,
@@ -362,7 +384,7 @@ class _WarningsTests(BaseTest):
def test_filter(self):
# Everything should function even if 'filters' is not in warnings.
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(module=self.module) as w:
self.module.filterwarnings("error", "", Warning, "", 0)
self.assertRaises(UserWarning, self.module.warn,
'convert to error')
@@ -377,21 +399,22 @@ class _WarningsTests(BaseTest):
try:
original_registry = self.module.onceregistry
__warningregistry__ = {}
- with support.catch_warning(self.module) as w:
+ with original_warnings.catch_warnings(record=True,
+ module=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.failUnlessEqual(w[-1].message, message)
+ del w[:]
self.module.warn_explicit(message, UserWarning, "file", 42)
self.assertEquals(len(w), 0)
# Test the resetting of onceregistry.
self.module.onceregistry = {}
__warningregistry__ = {}
self.module.warn('onceregistry test')
- self.failUnlessEqual(w.message.args, message.args)
+ self.failUnlessEqual(w[-1].message.args, message.args)
# Removal of onceregistry is okay.
- w.reset()
+ del w[:]
del self.module.onceregistry
__warningregistry__ = {}
self.module.warn_explicit(message, UserWarning, "file", 42)
@@ -402,7 +425,7 @@ class _WarningsTests(BaseTest):
def test_showwarning_missing(self):
# Test that showwarning() missing is okay.
text = 'del showwarning test'
- with support.catch_warning(self.module):
+ with original_warnings.catch_warnings(module=self.module):
self.module.filterwarnings("always", category=UserWarning)
del self.module.showwarning
with support.captured_output('stderr') as stream:
@@ -423,7 +446,7 @@ class _WarningsTests(BaseTest):
def test_show_warning_output(self):
# With showarning() missing, make sure that output is okay.
text = 'test show_warning'
- with support.catch_warning(self.module):
+ with original_warnings.catch_warnings(module=self.module):
self.module.filterwarnings("always", category=UserWarning)
del self.module.showwarning
with support.captured_output('stderr') as stream:
@@ -494,6 +517,7 @@ class CWarningsDisplayTests(BaseTest, WarningsDisplayTests):
class PyWarningsDisplayTests(BaseTest, WarningsDisplayTests):
module = py_warnings
+
class CatchWarningTests(BaseTest):
"""Test catch_warnings()."""
@@ -517,12 +541,12 @@ class CatchWarningTests(BaseTest):
self.assertEqual(w, [])
wmod.simplefilter("always")
wmod.warn("foo")
- self.assertEqual(str(w.message), "foo")
+ self.assertEqual(str(w[-1].message), "foo")
wmod.warn("bar")
- self.assertEqual(str(w.message), "bar")
+ self.assertEqual(str(w[-1].message), "bar")
self.assertEqual(str(w[0].message), "foo")
self.assertEqual(str(w[1].message), "bar")
- w.reset()
+ del w[:]
self.assertEqual(w, [])
orig_showwarning = wmod.showwarning
with support.catch_warning(module=wmod, record=False) as w: