summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2015-11-13 15:54:05 -0500
committerSimon Charette <charette.s@gmail.com>2015-11-14 11:33:28 -0500
commit1c5f4e86bc9c7bae5d5f3830d9cfbb0043297261 (patch)
treefe79a6afb78716fad02cd0659f336e459b1576b6
parentd95b22bd56764c71047ec16f628c00c0fd997cfd (diff)
Fixed #25745 -- Promoted RuntimeWarnings to errors in the test suite.
-rw-r--r--tests/apps/tests.py14
-rw-r--r--tests/backends/tests.py1
-rw-r--r--tests/migrations/test_graph.py2
-rw-r--r--tests/model_regress/test_pickle.py17
-rw-r--r--tests/queryset_pickle/tests.py17
-rwxr-xr-xtests/runtests.py2
6 files changed, 19 insertions, 34 deletions
diff --git a/tests/apps/tests.py b/tests/apps/tests.py
index c226bf5010..9dad3cfb86 100644
--- a/tests/apps/tests.py
+++ b/tests/apps/tests.py
@@ -1,7 +1,6 @@
from __future__ import unicode_literals
import os
-import warnings
from unittest import skipUnless
from django.apps import AppConfig, apps
@@ -232,14 +231,13 @@ class AppsTests(SimpleTestCase):
body = {}
body['Meta'] = type(str("Meta"), tuple(), meta_contents)
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)
- 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
# a RuntimeError.
diff --git a/tests/backends/tests.py b/tests/backends/tests.py
index 6237e860fb..693bb77180 100644
--- a/tests/backends/tests.py
+++ b/tests/backends/tests.py
@@ -203,6 +203,7 @@ class PostgreSQLTests(TestCase):
with warnings.catch_warnings(record=True) as w:
with mock.patch('django.db.backends.base.base.BaseDatabaseWrapper.connect',
side_effect=mocked_connect, autospec=True):
+ warnings.simplefilter('always', RuntimeWarning)
nodb_conn = connection._nodb_connection
self.assertIsNotNone(nodb_conn.settings_dict['NAME'])
self.assertEqual(nodb_conn.settings_dict['NAME'], connection.settings_dict['NAME'])
diff --git a/tests/migrations/test_graph.py b/tests/migrations/test_graph.py
index 29738dfdf0..6260d41887 100644
--- a/tests/migrations/test_graph.py
+++ b/tests/migrations/test_graph.py
@@ -197,6 +197,7 @@ class GraphTests(SimpleTestCase):
leaf = expected[-1]
with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter('always', RuntimeWarning)
forwards_plan = graph.forwards_plan(leaf)
self.assertEqual(len(w), 1)
@@ -205,6 +206,7 @@ class GraphTests(SimpleTestCase):
self.assertEqual(expected, forwards_plan)
with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter('always', RuntimeWarning)
backwards_plan = graph.backwards_plan(root)
self.assertEqual(len(w), 1)
diff --git a/tests/model_regress/test_pickle.py b/tests/model_regress/test_pickle.py
index 517646c407..393c53733b 100644
--- a/tests/model_regress/test_pickle.py
+++ b/tests/model_regress/test_pickle.py
@@ -3,13 +3,11 @@ import os
import pickle
import subprocess
import sys
-import warnings
from django.core.files.temp import NamedTemporaryFile
from django.db import DJANGO_VERSION_PICKLE_KEY, models
from django.test import TestCase, mock
from django.utils._os import npath, upath
-from django.utils.encoding import force_text
from django.utils.version import get_version
from .models import Article
@@ -31,11 +29,9 @@ class ModelPickleTestCase(TestCase):
return reduce_list
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))
- msg = force_text(recorded.pop().message)
- self.assertEqual(msg,
- "Pickled model instance's Django version is not specified.")
def test_unsupported_unpickle(self):
"""
@@ -52,14 +48,9 @@ class ModelPickleTestCase(TestCase):
return reduce_list
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))
- 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):
"""
diff --git a/tests/queryset_pickle/tests.py b/tests/queryset_pickle/tests.py
index 3e038b0c51..2a21e94889 100644
--- a/tests/queryset_pickle/tests.py
+++ b/tests/queryset_pickle/tests.py
@@ -3,12 +3,10 @@ from __future__ import unicode_literals
import datetime
import pickle
import unittest
-import warnings
from django.db import models
from django.test import TestCase
from django.utils import six
-from django.utils.encoding import force_text
from django.utils.version import get_version
from .models import Container, Event, Group, Happening, M2MModel
@@ -142,11 +140,9 @@ class PickleabilityTestCase(TestCase):
unpickled without a Django version
"""
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))
- msg = force_text(recorded.pop().message)
- self.assertEqual(msg,
- "Pickled queryset instance's Django version is not specified.")
def test_unsupported_unpickle(self):
"""
@@ -154,11 +150,6 @@ class PickleabilityTestCase(TestCase):
unpickled with a different Django version than the current
"""
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))
- 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()
- )
diff --git a/tests/runtests.py b/tests/runtests.py
index af7b4046e8..55468e494d 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -24,6 +24,8 @@ from django.utils.log import DEFAULT_LOGGING
# Make deprecation warnings errors to ensure no usage of deprecated features.
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.
warnings.filterwarnings("ignore", "'U' mode is deprecated", DeprecationWarning, module='docutils.io')