Fixed #25745 -- Promoted RuntimeWarnings to errors in the test suite.
This commit is contained in:
parent
d95b22bd56
commit
1c5f4e86bc
|
@ -1,7 +1,6 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import warnings
|
|
||||||
from unittest import skipUnless
|
from unittest import skipUnless
|
||||||
|
|
||||||
from django.apps import AppConfig, apps
|
from django.apps import AppConfig, apps
|
||||||
|
@ -232,14 +231,13 @@ class AppsTests(SimpleTestCase):
|
||||||
body = {}
|
body = {}
|
||||||
body['Meta'] = type(str("Meta"), tuple(), meta_contents)
|
body['Meta'] = type(str("Meta"), tuple(), meta_contents)
|
||||||
body['__module__'] = TotallyNormal.__module__
|
body['__module__'] = TotallyNormal.__module__
|
||||||
with warnings.catch_warnings(record=True) as w:
|
msg = (
|
||||||
|
"Model 'apps.southponies' was already registered. "
|
||||||
|
"Reloading models is not advised as it can lead to inconsistencies, "
|
||||||
|
"most notably with related models."
|
||||||
|
)
|
||||||
|
with self.assertRaisesMessage(RuntimeWarning, msg):
|
||||||
type(str("SouthPonies"), (models.Model,), body)
|
type(str("SouthPonies"), (models.Model,), body)
|
||||||
self.assertEqual(len(w), 1)
|
|
||||||
self.assertTrue(issubclass(w[-1].category, RuntimeWarning))
|
|
||||||
self.assertEqual(str(w[-1].message),
|
|
||||||
"Model 'apps.southponies' was already registered. "
|
|
||||||
"Reloading models is not advised as it can lead to inconsistencies, "
|
|
||||||
"most notably with related models.")
|
|
||||||
|
|
||||||
# If it doesn't appear to be a reloaded module then we expect
|
# If it doesn't appear to be a reloaded module then we expect
|
||||||
# a RuntimeError.
|
# a RuntimeError.
|
||||||
|
|
|
@ -203,6 +203,7 @@ class PostgreSQLTests(TestCase):
|
||||||
with warnings.catch_warnings(record=True) as w:
|
with warnings.catch_warnings(record=True) as w:
|
||||||
with mock.patch('django.db.backends.base.base.BaseDatabaseWrapper.connect',
|
with mock.patch('django.db.backends.base.base.BaseDatabaseWrapper.connect',
|
||||||
side_effect=mocked_connect, autospec=True):
|
side_effect=mocked_connect, autospec=True):
|
||||||
|
warnings.simplefilter('always', RuntimeWarning)
|
||||||
nodb_conn = connection._nodb_connection
|
nodb_conn = connection._nodb_connection
|
||||||
self.assertIsNotNone(nodb_conn.settings_dict['NAME'])
|
self.assertIsNotNone(nodb_conn.settings_dict['NAME'])
|
||||||
self.assertEqual(nodb_conn.settings_dict['NAME'], connection.settings_dict['NAME'])
|
self.assertEqual(nodb_conn.settings_dict['NAME'], connection.settings_dict['NAME'])
|
||||||
|
|
|
@ -197,6 +197,7 @@ class GraphTests(SimpleTestCase):
|
||||||
leaf = expected[-1]
|
leaf = expected[-1]
|
||||||
|
|
||||||
with warnings.catch_warnings(record=True) as w:
|
with warnings.catch_warnings(record=True) as w:
|
||||||
|
warnings.simplefilter('always', RuntimeWarning)
|
||||||
forwards_plan = graph.forwards_plan(leaf)
|
forwards_plan = graph.forwards_plan(leaf)
|
||||||
|
|
||||||
self.assertEqual(len(w), 1)
|
self.assertEqual(len(w), 1)
|
||||||
|
@ -205,6 +206,7 @@ class GraphTests(SimpleTestCase):
|
||||||
self.assertEqual(expected, forwards_plan)
|
self.assertEqual(expected, forwards_plan)
|
||||||
|
|
||||||
with warnings.catch_warnings(record=True) as w:
|
with warnings.catch_warnings(record=True) as w:
|
||||||
|
warnings.simplefilter('always', RuntimeWarning)
|
||||||
backwards_plan = graph.backwards_plan(root)
|
backwards_plan = graph.backwards_plan(root)
|
||||||
|
|
||||||
self.assertEqual(len(w), 1)
|
self.assertEqual(len(w), 1)
|
||||||
|
|
|
@ -3,13 +3,11 @@ import os
|
||||||
import pickle
|
import pickle
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import warnings
|
|
||||||
|
|
||||||
from django.core.files.temp import NamedTemporaryFile
|
from django.core.files.temp import NamedTemporaryFile
|
||||||
from django.db import DJANGO_VERSION_PICKLE_KEY, models
|
from django.db import DJANGO_VERSION_PICKLE_KEY, models
|
||||||
from django.test import TestCase, mock
|
from django.test import TestCase, mock
|
||||||
from django.utils._os import npath, upath
|
from django.utils._os import npath, upath
|
||||||
from django.utils.encoding import force_text
|
|
||||||
from django.utils.version import get_version
|
from django.utils.version import get_version
|
||||||
|
|
||||||
from .models import Article
|
from .models import Article
|
||||||
|
@ -31,11 +29,9 @@ class ModelPickleTestCase(TestCase):
|
||||||
return reduce_list
|
return reduce_list
|
||||||
|
|
||||||
p = MissingDjangoVersion(title="FooBar")
|
p = MissingDjangoVersion(title="FooBar")
|
||||||
with warnings.catch_warnings(record=True) as recorded:
|
msg = "Pickled model instance's Django version is not specified."
|
||||||
|
with self.assertRaisesMessage(RuntimeWarning, msg):
|
||||||
pickle.loads(pickle.dumps(p))
|
pickle.loads(pickle.dumps(p))
|
||||||
msg = force_text(recorded.pop().message)
|
|
||||||
self.assertEqual(msg,
|
|
||||||
"Pickled model instance's Django version is not specified.")
|
|
||||||
|
|
||||||
def test_unsupported_unpickle(self):
|
def test_unsupported_unpickle(self):
|
||||||
"""
|
"""
|
||||||
|
@ -52,14 +48,9 @@ class ModelPickleTestCase(TestCase):
|
||||||
return reduce_list
|
return reduce_list
|
||||||
|
|
||||||
p = DifferentDjangoVersion(title="FooBar")
|
p = DifferentDjangoVersion(title="FooBar")
|
||||||
with warnings.catch_warnings(record=True) as recorded:
|
msg = "Pickled model instance's Django version 1.0 does not match the current version %s." % get_version()
|
||||||
|
with self.assertRaisesMessage(RuntimeWarning, msg):
|
||||||
pickle.loads(pickle.dumps(p))
|
pickle.loads(pickle.dumps(p))
|
||||||
msg = force_text(recorded.pop().message)
|
|
||||||
self.assertEqual(
|
|
||||||
msg,
|
|
||||||
"Pickled model instance's Django version 1.0 does not "
|
|
||||||
"match the current version %s." % get_version()
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_unpickling_when_appregistrynotready(self):
|
def test_unpickling_when_appregistrynotready(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -3,12 +3,10 @@ from __future__ import unicode_literals
|
||||||
import datetime
|
import datetime
|
||||||
import pickle
|
import pickle
|
||||||
import unittest
|
import unittest
|
||||||
import warnings
|
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
from django.utils.encoding import force_text
|
|
||||||
from django.utils.version import get_version
|
from django.utils.version import get_version
|
||||||
|
|
||||||
from .models import Container, Event, Group, Happening, M2MModel
|
from .models import Container, Event, Group, Happening, M2MModel
|
||||||
|
@ -142,11 +140,9 @@ class PickleabilityTestCase(TestCase):
|
||||||
unpickled without a Django version
|
unpickled without a Django version
|
||||||
"""
|
"""
|
||||||
qs = Group.missing_django_version_objects.all()
|
qs = Group.missing_django_version_objects.all()
|
||||||
with warnings.catch_warnings(record=True) as recorded:
|
msg = "Pickled queryset instance's Django version is not specified."
|
||||||
|
with self.assertRaisesMessage(RuntimeWarning, msg):
|
||||||
pickle.loads(pickle.dumps(qs))
|
pickle.loads(pickle.dumps(qs))
|
||||||
msg = force_text(recorded.pop().message)
|
|
||||||
self.assertEqual(msg,
|
|
||||||
"Pickled queryset instance's Django version is not specified.")
|
|
||||||
|
|
||||||
def test_unsupported_unpickle(self):
|
def test_unsupported_unpickle(self):
|
||||||
"""
|
"""
|
||||||
|
@ -154,11 +150,6 @@ class PickleabilityTestCase(TestCase):
|
||||||
unpickled with a different Django version than the current
|
unpickled with a different Django version than the current
|
||||||
"""
|
"""
|
||||||
qs = Group.previous_django_version_objects.all()
|
qs = Group.previous_django_version_objects.all()
|
||||||
with warnings.catch_warnings(record=True) as recorded:
|
msg = "Pickled queryset instance's Django version 1.0 does not match the current version %s." % get_version()
|
||||||
|
with self.assertRaisesMessage(RuntimeWarning, msg):
|
||||||
pickle.loads(pickle.dumps(qs))
|
pickle.loads(pickle.dumps(qs))
|
||||||
msg = force_text(recorded.pop().message)
|
|
||||||
self.assertEqual(
|
|
||||||
msg,
|
|
||||||
"Pickled queryset instance's Django version 1.0 does not "
|
|
||||||
"match the current version %s." % get_version()
|
|
||||||
)
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ from django.utils.log import DEFAULT_LOGGING
|
||||||
|
|
||||||
# Make deprecation warnings errors to ensure no usage of deprecated features.
|
# Make deprecation warnings errors to ensure no usage of deprecated features.
|
||||||
warnings.simplefilter("error", RemovedInDjango20Warning)
|
warnings.simplefilter("error", RemovedInDjango20Warning)
|
||||||
|
# Make runtime warning errors to ensure no usage of error prone patterns.
|
||||||
|
warnings.simplefilter("error", RuntimeWarning)
|
||||||
# Ignore known warnings in test dependencies.
|
# Ignore known warnings in test dependencies.
|
||||||
warnings.filterwarnings("ignore", "'U' mode is deprecated", DeprecationWarning, module='docutils.io')
|
warnings.filterwarnings("ignore", "'U' mode is deprecated", DeprecationWarning, module='docutils.io')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue