Commit 455baa68 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

[1.5.x] Changed testing strategy used in 6b03179e.

Avoid polluting the app cache as it causes unrelated test failures.

Refs #19688.

Backport of 7b49da1c from master.
parent f8b41da4
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
from django.db.models.base import ModelBase
from __future__ import unicode_literals

from django.db import models
from django.utils import six

class CustomBaseModel(ModelBase):

# The models definitions below used to crash. Generating models dynamically
# at runtime is a bad idea because it pollutes the app cache. This doesn't
# integrate well with the test suite but at least it prevents regressions.


class CustomBaseModel(models.base.ModelBase):
    pass


class MyModel(six.with_metaclass(CustomBaseModel, models.Model)):
        """Model subclass with a custom base using six.with_metaclass."""


if not six.PY3:
    class MyModel(models.Model):
        """Model subclass with a custom base using __metaclass__."""
        __metaclass__ = CustomBaseModel

tests/modeltests/base/tests.py

deleted100644 → 0
+0 −36
Original line number Diff line number Diff line
from __future__ import unicode_literals

from django.db import models
from django.test.testcases import SimpleTestCase
from django.utils import six
from django.utils.unittest import skipIf

from .models import CustomBaseModel


class CustomBaseTest(SimpleTestCase):

    @skipIf(six.PY3, 'test metaclass definition under Python 2')
    def test_py2_custom_base(self):
        """
        Make sure models.Model can be subclassed with a valid custom base
        using __metaclass__
        """
        try:
            class MyModel(models.Model):
                __metaclass__ = CustomBaseModel
        except Exception:
            self.fail("models.Model couldn't be subclassed with a valid "
                      "custom base using __metaclass__.")

    def test_six_custom_base(self):
        """
        Make sure models.Model can be subclassed with a valid custom base
        using `six.with_metaclass`.
        """
        try:
            class MyModel(six.with_metaclass(CustomBaseModel, models.Model)):
                pass
        except Exception:
            self.fail("models.Model couldn't be subclassed with a valid "
                      "custom base using `six.with_metaclass`.")