summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2021-05-21 10:36:37 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-06-04 12:29:09 +0200
commit2e4711c611896ae6490d3fa3f8d0c506f2ff3673 (patch)
treefa718fd1e52ab30be28d23e9224f1f6e652be994
parentd8c17aa10c7f41e692fb6f5d0bf2fab7a90b9374 (diff)
Made SerializeMixin check lockfile attr at import time.
-rw-r--r--django/test/testcases.py7
-rw-r--r--tests/test_utils/test_serializemixin.py21
2 files changed, 26 insertions, 2 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 53508cdb8a..ec5363b4ea 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1624,12 +1624,15 @@ class SerializeMixin:
"""
lockfile = None
- @classmethod
- def setUpClass(cls):
+ def __init_subclass__(cls, /, **kwargs):
+ super().__init_subclass__(**kwargs)
if cls.lockfile is None:
raise ValueError(
"{}.lockfile isn't set. Set it to a unique value "
"in the base class.".format(cls.__name__))
+
+ @classmethod
+ def setUpClass(cls):
cls._lockfile = open(cls.lockfile)
locks.lock(cls._lockfile, locks.LOCK_EX)
super().setUpClass()
diff --git a/tests/test_utils/test_serializemixin.py b/tests/test_utils/test_serializemixin.py
new file mode 100644
index 0000000000..662ba71ca0
--- /dev/null
+++ b/tests/test_utils/test_serializemixin.py
@@ -0,0 +1,21 @@
+from django.test import SimpleTestCase
+from django.test.testcases import SerializeMixin
+
+
+class TestSerializeMixin(SimpleTestCase):
+ def test_init_without_lockfile(self):
+ msg = (
+ "ExampleTests.lockfile isn't set. Set it to a unique value in the "
+ "base class."
+ )
+ with self.assertRaisesMessage(ValueError, msg):
+ class ExampleTests(SerializeMixin, SimpleTestCase):
+ pass
+
+
+class TestSerializeMixinUse(SerializeMixin, SimpleTestCase):
+ lockfile = __file__
+
+ def test_usage(self):
+ # Running this test ensures that the lock/unlock functions have passed.
+ pass