diff options
| author | varunkasyap <varunkasyap@hotmail.com> | 2026-02-19 14:17:27 +0530 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-04-30 08:12:08 -0400 |
| commit | 8c8b833d32c02d3ae6f43b04bb1e45968796b402 (patch) | |
| tree | 09526ab30578d44e944af324375ce4b6e16abc31 /tests/tasks/test_tasks.py | |
| parent | 02a7d43d02e2acc9325a5a27eb01ffe7dbba5c7f (diff) | |
Fixed #36919 -- Allowed Task and TaskResult to be pickled.
Diffstat (limited to 'tests/tasks/test_tasks.py')
| -rw-r--r-- | tests/tasks/test_tasks.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/tasks/test_tasks.py b/tests/tasks/test_tasks.py index b66c2df058..267169f4fa 100644 --- a/tests/tasks/test_tasks.py +++ b/tests/tasks/test_tasks.py @@ -1,4 +1,5 @@ import dataclasses +import pickle from datetime import datetime from django.tasks import ( @@ -269,6 +270,31 @@ class TaskTestCase(SimpleTestCase): test_tasks.noop_task_async, ) + def test_pickle_task(self): + pickled_task = pickle.dumps(test_tasks.noop_task) + unpickled_task = pickle.loads(pickled_task) + + self.assertEqual(unpickled_task, test_tasks.noop_task) + + def test_unpickle_arbitrary_string(self): + kwargs = {"func": "does.not.exist.fake_task"} + msg = "Expected 'does.not.exist.fake_task' to point to a Task instance." + with self.assertRaisesMessage(ValueError, msg): + Task._reconstruct(kwargs) + + def test_unpickle_non_task_object(self): + kwargs = {"func": "builtins.any"} + msg = "Expected 'builtins.any' to point to a Task instance." + with self.assertRaisesMessage(ValueError, msg): + Task._reconstruct(kwargs) + + def test_pickle_task_result(self): + result = test_tasks.noop_task.enqueue() + pickled_result = pickle.dumps(result) + unpickled_result = pickle.loads(pickled_result) + + self.assertEqual(unpickled_result, result) + @override_settings(TASKS={}) def test_no_backends(self): with self.assertRaises(InvalidTaskBackend): |
