diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2014-09-18 02:42:05 +0200 |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2014-09-18 02:42:05 +0200 |
commit | 87538e7bc46885d2ad2cce423603b45d182d6d40 (patch) | |
tree | 732e291a58b2eeedab44f04d9b9f504a5960ae68 /Lib/test/test_warnings.py | |
parent | 605a64b4360c552b20fc74d1ab51dd5bdd98e1ae (diff) | |
parent | cb0a006fd11c06178a656cfdc6390b197b22fc67 (diff) | |
download | cpython-git-87538e7bc46885d2ad2cce423603b45d182d6d40.tar.gz |
Issue #4180: The warnings registries are now reset when the filters are modified.
Diffstat (limited to 'Lib/test/test_warnings.py')
-rw-r--r-- | Lib/test/test_warnings.py | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py index ad1d5407bc..47763219f8 100644 --- a/Lib/test/test_warnings.py +++ b/Lib/test/test_warnings.py @@ -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" |