diff --git a/tests/modeltests/base/models.py b/tests/modeltests/base/models.py index 3d39302aba9..bddb4068207 100644 --- a/tests/modeltests/base/models.py +++ b/tests/modeltests/base/models.py @@ -1,5 +1,23 @@ -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 diff --git a/tests/modeltests/base/tests.py b/tests/modeltests/base/tests.py deleted file mode 100644 index 6229b7a305d..00000000000 --- a/tests/modeltests/base/tests.py +++ /dev/null @@ -1,36 +0,0 @@ -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`.")