diff options
| author | Adam Johnson <me@adamj.eu> | 2021-05-21 10:36:37 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-06-04 12:29:09 +0200 |
| commit | 2e4711c611896ae6490d3fa3f8d0c506f2ff3673 (patch) | |
| tree | fa718fd1e52ab30be28d23e9224f1f6e652be994 | |
| parent | d8c17aa10c7f41e692fb6f5d0bf2fab7a90b9374 (diff) | |
Made SerializeMixin check lockfile attr at import time.
| -rw-r--r-- | django/test/testcases.py | 7 | ||||
| -rw-r--r-- | tests/test_utils/test_serializemixin.py | 21 |
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 |
