Avoided changing raw DeprecationWarning filter behavior

Refs #21188. Now pure Python DeprecationWarning visibility should
be back to Python defaults.
This commit is contained in:
Claude Paroz 2014-03-08 11:13:45 +01:00
parent 210d0489c5
commit 0c6a339952
5 changed files with 19 additions and 11 deletions

View File

@ -10,6 +10,9 @@ class RemovedInDjango18Warning(DeprecationWarning):
pass
RemovedInNextVersionWarning = RemovedInDjango18Warning
class warn_about_renamed_method(object):
def __init__(self, class_name, old_method_name, new_method_name, deprecation_warning):
self.class_name = class_name

View File

@ -5,6 +5,7 @@ import warnings
from django.conf import settings
from django.core import mail
from django.core.mail import get_connection
from django.utils.deprecation import RemovedInNextVersionWarning
from django.utils.module_loading import import_string
from django.views.debug import ExceptionReporter, get_exception_reporter_filter
@ -68,8 +69,9 @@ def configure_logging(logging_config, logging_settings):
if not sys.warnoptions:
# Route warnings through python logging
logging.captureWarnings(True)
# Allow DeprecationWarnings through the warnings filters
warnings.simplefilter("default", DeprecationWarning)
# RemovedInNextVersionWarning is a subclass of DeprecationWarning which
# is hidden by default, hence we force the "default" behavior
warnings.simplefilter("default", RemovedInNextVersionWarning)
if logging_config:
# First find the logging configuration function ...

View File

@ -7,6 +7,7 @@ from django.core import mail
from django.test import TestCase, RequestFactory, override_settings
from django.test.utils import patch_logger
from django.utils.encoding import force_text
from django.utils.deprecation import RemovedInNextVersionWarning
from django.utils.log import (CallbackFilter, RequireDebugFalse,
RequireDebugTrue)
from django.utils.six import StringIO
@ -86,8 +87,8 @@ class DefaultLoggingTest(TestCase):
class WarningLoggerTests(TestCase):
"""
Tests that warnings output for DeprecationWarnings is enabled
and captured to the logging system
Tests that warnings output for RemovedInDjangoXXWarning (XX being the next
Django version) is enabled and captured to the logging system
"""
def setUp(self):
# If tests are invoke with "-Wall" (or any -W flag actually) then
@ -118,12 +119,12 @@ class WarningLoggerTests(TestCase):
@override_settings(DEBUG=True)
def test_warnings_capture(self):
warnings.warn('Foo Deprecated', DeprecationWarning)
warnings.warn('Foo Deprecated', RemovedInNextVersionWarning)
output = force_text(self.outputs[0].getvalue())
self.assertTrue('Foo Deprecated' in output)
def test_warnings_capture_debug_false(self):
warnings.warn('Foo Deprecated', DeprecationWarning)
warnings.warn('Foo Deprecated', RemovedInNextVersionWarning)
output = force_text(self.outputs[0].getvalue())
self.assertFalse('Foo Deprecated' in output)

View File

@ -13,6 +13,7 @@ from django import db
from django.test import runner, TestCase, TransactionTestCase, skipUnlessDBFeature
from django.test.testcases import connections_support_transactions
from django.test.utils import IgnoreAllDeprecationWarningsMixin, override_system_checks
from django.utils import six
from admin_scripts.tests import AdminScriptTestCase
from .models import Person
@ -368,14 +369,14 @@ class DeprecationDisplayTest(AdminScriptTestCase):
args = ['test', '--settings=test_project.settings', 'test_runner_deprecation_app']
out, err = self.run_django_admin(args)
self.assertIn("Ran 1 test", err)
self.assertIn("DeprecationWarning: warning from test", err)
self.assertIn("DeprecationWarning: module-level warning from deprecation_app", err)
six.assertRegex(self, err, r"RemovedInDjango\d\dWarning: warning from test")
six.assertRegex(self, err, r"RemovedInDjango\d\dWarning: module-level warning from deprecation_app")
def test_runner_deprecation_verbosity_zero(self):
args = ['test', '--settings=test_project.settings', '--verbosity=0', 'test_runner_deprecation_app']
out, err = self.run_django_admin(args)
self.assertIn("Ran 1 test", err)
self.assertFalse("DeprecationWarning: warning from test" in err)
self.assertFalse("warning from test" in err)
class AutoIncrementResetTest(TransactionTestCase):

View File

@ -1,10 +1,11 @@
import warnings
from django.test import TestCase
from django.utils.deprecation import RemovedInNextVersionWarning
warnings.warn("module-level warning from deprecation_app", DeprecationWarning)
warnings.warn("module-level warning from deprecation_app", RemovedInNextVersionWarning)
class DummyTest(TestCase):
def test_warn(self):
warnings.warn("warning from test", DeprecationWarning)
warnings.warn("warning from test", RemovedInNextVersionWarning)