Loading django/test/simple.py +13 −0 Original line number Diff line number Diff line import logging import unittest as real_unittest from django.conf import settings Loading Loading @@ -365,7 +366,19 @@ class DjangoTestSuiteRunner(object): self.setup_test_environment() suite = self.build_suite(test_labels, extra_tests) old_config = self.setup_databases() if self.verbosity > 0: # ensure that deprecation warnings are displayed during testing # the following state is assumed: # logging.capturewarnings is true # a "default" level warnings filter has been added for # DeprecationWarning. See django.conf.LazySettings._configure_logging logger = logging.getLogger('py.warnings') handler = logging.StreamHandler() logger.addHandler(handler) result = self.run_suite(suite) if self.verbosity > 0: # remove the testing-specific handler logger.removeHandler(handler) self.teardown_databases(old_config) self.teardown_test_environment() return self.suite_result(suite, result) tests/regressiontests/logging_tests/tests.py +15 −8 Original line number Diff line number Diff line Loading @@ -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): Loading tests/regressiontests/test_runner/deprecation_app/__init__.py 0 → 100644 +0 −0 Empty file added. tests/regressiontests/test_runner/deprecation_app/models.py 0 → 100644 +3 −0 Original line number Diff line number Diff line from django.db import models # Create your models here. tests/regressiontests/test_runner/deprecation_app/tests.py 0 → 100644 +9 −0 Original line number Diff line number Diff line import warnings from django.test import TestCase class DummyTest(TestCase): def test_warn(self): warnings.warn("warning from test", DeprecationWarning) Loading
django/test/simple.py +13 −0 Original line number Diff line number Diff line import logging import unittest as real_unittest from django.conf import settings Loading Loading @@ -365,7 +366,19 @@ class DjangoTestSuiteRunner(object): self.setup_test_environment() suite = self.build_suite(test_labels, extra_tests) old_config = self.setup_databases() if self.verbosity > 0: # ensure that deprecation warnings are displayed during testing # the following state is assumed: # logging.capturewarnings is true # a "default" level warnings filter has been added for # DeprecationWarning. See django.conf.LazySettings._configure_logging logger = logging.getLogger('py.warnings') handler = logging.StreamHandler() logger.addHandler(handler) result = self.run_suite(suite) if self.verbosity > 0: # remove the testing-specific handler logger.removeHandler(handler) self.teardown_databases(old_config) self.teardown_test_environment() return self.suite_result(suite, result)
tests/regressiontests/logging_tests/tests.py +15 −8 Original line number Diff line number Diff line Loading @@ -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): Loading
tests/regressiontests/test_runner/deprecation_app/models.py 0 → 100644 +3 −0 Original line number Diff line number Diff line from django.db import models # Create your models here.
tests/regressiontests/test_runner/deprecation_app/tests.py 0 → 100644 +9 −0 Original line number Diff line number Diff line import warnings from django.test import TestCase class DummyTest(TestCase): def test_warn(self): warnings.warn("warning from test", DeprecationWarning)