From cfa70d0c94a43d94e3ee48db87f2b88c29a862e1 Mon Sep 17 00:00:00 2001 From: Preston Holmes Date: Wed, 2 Jan 2013 16:00:39 -0800 Subject: Fixed #19546 - ensure that deprecation warnings are shown during tests refs #18985 --- tests/regressiontests/logging_tests/tests.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'tests/regressiontests/logging_tests') diff --git a/tests/regressiontests/logging_tests/tests.py b/tests/regressiontests/logging_tests/tests.py index f9838949ab..b3d9f3b352 100644 --- a/tests/regressiontests/logging_tests/tests.py +++ b/tests/regressiontests/logging_tests/tests.py @@ -93,24 +93,31 @@ class WarningLoggerTests(TestCase): and captured to the logging system """ def setUp(self): + # this convoluted setup is to avoid printing this deprecation to + # stderr during test running - as the test runner forces deprecations + # to be displayed at the global py.warnings level self.logger = logging.getLogger('py.warnings') - self.old_stream = self.logger.handlers[0].stream + self.outputs = [] + self.old_streams = [] + for handler in self.logger.handlers: + self.old_streams.append(handler.stream) + self.outputs.append(StringIO()) + handler.stream = self.outputs[-1] def tearDown(self): - self.logger.handlers[0].stream = self.old_stream + for i, handler in enumerate(self.logger.handlers): + self.logger.handlers[i].stream = self.old_streams[i] @override_settings(DEBUG=True) def test_warnings_capture(self): - output = StringIO() - self.logger.handlers[0].stream = output warnings.warn('Foo Deprecated', DeprecationWarning) - self.assertTrue('Foo Deprecated' in force_text(output.getvalue())) + output = force_text(self.outputs[0].getvalue()) + self.assertTrue('Foo Deprecated' in output) def test_warnings_capture_debug_false(self): - output = StringIO() - self.logger.handlers[0].stream = output warnings.warn('Foo Deprecated', DeprecationWarning) - self.assertFalse('Foo Deprecated' in force_text(output.getvalue())) + output = force_text(self.outputs[0].getvalue()) + self.assertFalse('Foo Deprecated' in output) class CallbackFilterTest(TestCase): -- cgit v1.3