mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[1.9.x] Fixed #25745 -- Promoted RuntimeWarnings to errors in the test suite.
Backport of 1c5f4e86bc from master
			
			
This commit is contained in:
		| @@ -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 = ( | ||||||
|             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. " |             "Model 'apps.southponies' was already registered. " | ||||||
|             "Reloading models is not advised as it can lead to inconsistencies, " |             "Reloading models is not advised as it can lead to inconsistencies, " | ||||||
|                  "most notably with related models.") |             "most notably with related models." | ||||||
|  |         ) | ||||||
|  |         with self.assertRaisesMessage(RuntimeWarning, msg): | ||||||
|  |             type(str("SouthPonies"), (models.Model,), body) | ||||||
|  |  | ||||||
|         # 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,11 +3,9 @@ from __future__ import unicode_literals | |||||||
| import datetime | import datetime | ||||||
| import pickle | import pickle | ||||||
| import unittest | import unittest | ||||||
| import warnings |  | ||||||
|  |  | ||||||
| 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 | ||||||
| @@ -136,11 +134,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): | ||||||
|         """ |         """ | ||||||
| @@ -148,11 +144,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() |  | ||||||
|             ) |  | ||||||
|   | |||||||
| @@ -27,6 +27,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", RemovedInDjango110Warning) | warnings.simplefilter("error", RemovedInDjango110Warning) | ||||||
| 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') | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user