mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
Issue #4180: The warnings registries are now reset when the filters are modified.
This commit is contained in:
commit
87538e7bc4
4 changed files with 101 additions and 9 deletions
|
@ -92,6 +92,16 @@ class FilterTests(BaseTest):
|
|||
self.assertRaises(UserWarning, self.module.warn,
|
||||
"FilterTests.test_error")
|
||||
|
||||
def test_error_after_default(self):
|
||||
with original_warnings.catch_warnings(module=self.module) as w:
|
||||
self.module.resetwarnings()
|
||||
message = "FilterTests.test_ignore_after_default"
|
||||
def f():
|
||||
self.module.warn(message, UserWarning)
|
||||
f()
|
||||
self.module.filterwarnings("error", category=UserWarning)
|
||||
self.assertRaises(UserWarning, f)
|
||||
|
||||
def test_ignore(self):
|
||||
with original_warnings.catch_warnings(record=True,
|
||||
module=self.module) as w:
|
||||
|
@ -100,6 +110,19 @@ class FilterTests(BaseTest):
|
|||
self.module.warn("FilterTests.test_ignore", UserWarning)
|
||||
self.assertEqual(len(w), 0)
|
||||
|
||||
def test_ignore_after_default(self):
|
||||
with original_warnings.catch_warnings(record=True,
|
||||
module=self.module) as w:
|
||||
self.module.resetwarnings()
|
||||
message = "FilterTests.test_ignore_after_default"
|
||||
def f():
|
||||
self.module.warn(message, UserWarning)
|
||||
f()
|
||||
self.module.filterwarnings("ignore", category=UserWarning)
|
||||
f()
|
||||
f()
|
||||
self.assertEqual(len(w), 1)
|
||||
|
||||
def test_always(self):
|
||||
with original_warnings.catch_warnings(record=True,
|
||||
module=self.module) as w:
|
||||
|
@ -111,6 +134,26 @@ class FilterTests(BaseTest):
|
|||
self.module.warn(message, UserWarning)
|
||||
self.assertTrue(w[-1].message, message)
|
||||
|
||||
def test_always_after_default(self):
|
||||
with original_warnings.catch_warnings(record=True,
|
||||
module=self.module) as w:
|
||||
self.module.resetwarnings()
|
||||
message = "FilterTests.test_always_after_ignore"
|
||||
def f():
|
||||
self.module.warn(message, UserWarning)
|
||||
f()
|
||||
self.assertEqual(len(w), 1)
|
||||
self.assertEqual(w[-1].message.args[0], message)
|
||||
f()
|
||||
self.assertEqual(len(w), 1)
|
||||
self.module.filterwarnings("always", category=UserWarning)
|
||||
f()
|
||||
self.assertEqual(len(w), 2)
|
||||
self.assertEqual(w[-1].message.args[0], message)
|
||||
f()
|
||||
self.assertEqual(len(w), 3)
|
||||
self.assertEqual(w[-1].message.args[0], message)
|
||||
|
||||
def test_default(self):
|
||||
with original_warnings.catch_warnings(record=True,
|
||||
module=self.module) as w:
|
||||
|
@ -541,7 +584,9 @@ class _WarningsTests(BaseTest, unittest.TestCase):
|
|||
registry=registry)
|
||||
self.assertEqual(w[-1].message, message)
|
||||
self.assertEqual(len(w), 1)
|
||||
self.assertEqual(len(registry), 1)
|
||||
# One actual registry key plus the "version" key
|
||||
self.assertEqual(len(registry), 2)
|
||||
self.assertIn("version", registry)
|
||||
del w[:]
|
||||
# Test removal.
|
||||
del self.module.defaultaction
|
||||
|
@ -551,7 +596,7 @@ class _WarningsTests(BaseTest, unittest.TestCase):
|
|||
registry=registry)
|
||||
self.assertEqual(w[-1].message, message)
|
||||
self.assertEqual(len(w), 1)
|
||||
self.assertEqual(len(registry), 1)
|
||||
self.assertEqual(len(registry), 2)
|
||||
del w[:]
|
||||
# Test setting.
|
||||
self.module.defaultaction = "ignore"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue