Commit 1c5f4e86 authored by Simon Charette's avatar Simon Charette
Browse files

Fixed #25745 -- Promoted RuntimeWarnings to errors in the test suite.

parent d95b22bd
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
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:
            type(str("SouthPonies"), (models.Model,), body)
            self.assertEqual(len(w), 1)
            self.assertTrue(issubclass(w[-1].category, RuntimeWarning))
            self.assertEqual(str(w[-1].message),
        msg = (
            "Model 'apps.southponies' was already registered. "
            "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
        # a RuntimeError.
+1 −0
Original line number Diff line number Diff line
@@ -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'])
+2 −0
Original line number Diff line number Diff line
@@ -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)
+4 −13
Original line number Diff line number Diff line
@@ -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):
        """
+4 −13
Original line number Diff line number Diff line
@@ -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()
            )
Loading