From 2da4d628a5100627876a55e6a911d59570cd8c69 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 1 Apr 2009 19:57:10 +0000 Subject: [PATCH] test_logging was blindly clearing the warnings filter. This caused PendingDeprecationWarnings to be spewed all over by unittest.failIf*(). Fix moves over to using warnings.catch_warning to protect the warnings filter. --- Lib/test/test_logging.py | 44 +++++++++++++++++++++------------------- Misc/NEWS | 2 ++ 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 9c7bf5bcfbb..515fee9d0e0 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -910,30 +910,32 @@ class EncodingTest(BaseTest): class WarningsTest(BaseTest): + def test_warnings(self): logging.captureWarnings(True) - warnings.filterwarnings("always", category=UserWarning) - try: - file = cStringIO.StringIO() - h = logging.StreamHandler(file) - logger = logging.getLogger("py.warnings") - logger.addHandler(h) - warnings.warn("I'm warning you...") - logger.removeHandler(h) - s = file.getvalue() - h.close() - self.assertTrue(s.find("UserWarning: I'm warning you...\n") > 0) + with warnings.catch_warnings(): + warnings.filterwarnings("always", category=UserWarning) + try: + file = cStringIO.StringIO() + h = logging.StreamHandler(file) + logger = logging.getLogger("py.warnings") + logger.addHandler(h) + warnings.warn("I'm warning you...") + logger.removeHandler(h) + s = file.getvalue() + h.close() + self.assertTrue(s.find("UserWarning: I'm warning you...\n") > 0) - #See if an explicit file uses the original implementation - file = cStringIO.StringIO() - warnings.showwarning("Explicit", UserWarning, "dummy.py", 42, file, - "Dummy line") - s = file.getvalue() - file.close() - self.assertEqual(s, "dummy.py:42: UserWarning: Explicit\n Dummy line\n") - finally: - warnings.resetwarnings() - logging.captureWarnings(False) + #See if an explicit file uses the original implementation + file = cStringIO.StringIO() + warnings.showwarning("Explicit", UserWarning, "dummy.py", 42, + file, "Dummy line") + s = file.getvalue() + file.close() + self.assertEqual(s, + "dummy.py:42: UserWarning: Explicit\n Dummy line\n") + finally: + logging.captureWarnings(False) # Set the locale to the platform-dependent default. I have no idea # why the test does this, but in any case we save the current locale diff --git a/Misc/NEWS b/Misc/NEWS index 2e01d0d7261..c4474522fbe 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -730,6 +730,8 @@ Extension Modules Tests ----- +- Fix test_logging to no longer reset the warnings filter. + - Issue #5635: Fix running test_sys with tracing enabled. - regrtest no longer treats ImportError as equivalent to SkipTest. Imports