summaryrefslogtreecommitdiff
path: root/tests/test_runner/test_parallel.py
diff options
context:
space:
mode:
authorDavid Wobrock <david.wobrock@gmail.com>2023-12-27 17:02:27 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2024-02-21 12:04:03 +0100
commitc09e8f5fd8f977bf16e9ec5d11b370151fc81ea8 (patch)
tree8f001d9a2a2beb792cbfb3a25dbebf99a43c8165 /tests/test_runner/test_parallel.py
parenta269d8d1d8cec2f9ae7ecc0c97a41fcf9efee580 (diff)
Fixed #32114 -- Fixed parallel test crash on non-picklable objects in subtests.
Diffstat (limited to 'tests/test_runner/test_parallel.py')
-rw-r--r--tests/test_runner/test_parallel.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/test_runner/test_parallel.py b/tests/test_runner/test_parallel.py
index e83f53bf4e..8f7bfd5cf8 100644
--- a/tests/test_runner/test_parallel.py
+++ b/tests/test_runner/test_parallel.py
@@ -51,6 +51,13 @@ class SampleFailingSubtest(SimpleTestCase):
with self.subTest(index=i):
self.assertEqual(i, 1)
+ # This method name doesn't begin with "test" to prevent test discovery
+ # from seeing it.
+ def pickle_error_test(self):
+ with self.subTest("TypeError: cannot pickle memoryview object"):
+ self.x = memoryview(b"")
+ self.fail("expected failure")
+
class RemoteTestResultTest(SimpleTestCase):
def _test_error_exc_info(self):
@@ -106,6 +113,16 @@ class RemoteTestResultTest(SimpleTestCase):
with self.assertRaisesMessage(TypeError, msg):
result._confirm_picklable(not_unpicklable_error)
+ def test_unpicklable_subtest(self):
+ result = RemoteTestResult()
+ subtest_test = SampleFailingSubtest(methodName="pickle_error_test")
+ subtest_test.run(result=result)
+
+ events = result.events
+ subtest_event = events[1]
+ assertion_error = subtest_event[3]
+ self.assertEqual(str(assertion_error[1]), "expected failure")
+
@unittest.skipUnless(tblib is not None, "requires tblib to be installed")
def test_add_failing_subtests(self):
"""