summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2013-01-29 00:28:09 -0500
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-02-24 17:32:34 +0100
commit6b03179e126d4df01623dccc162c1579f349e41e (patch)
treeeb42a64785e44a2543c891b98087c36324180698 /tests
parente369dc28075b4331c125494fe7bd73855d73a0ce (diff)
Fixed #19688 -- Allow model subclassing with a custom metaclass using six.with_metaclass
Diffstat (limited to 'tests')
-rw-r--r--tests/modeltests/base/__init__.py0
-rw-r--r--tests/modeltests/base/models.py5
-rw-r--r--tests/modeltests/base/tests.py36
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/modeltests/base/__init__.py b/tests/modeltests/base/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/modeltests/base/__init__.py
diff --git a/tests/modeltests/base/models.py b/tests/modeltests/base/models.py
new file mode 100644
index 0000000000..3d39302aba
--- /dev/null
+++ b/tests/modeltests/base/models.py
@@ -0,0 +1,5 @@
+from django.db.models.base import ModelBase
+
+
+class CustomBaseModel(ModelBase):
+ pass
diff --git a/tests/modeltests/base/tests.py b/tests/modeltests/base/tests.py
new file mode 100644
index 0000000000..6229b7a305
--- /dev/null
+++ b/tests/modeltests/base/tests.py
@@ -0,0 +1,36 @@
+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`.")