aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/tests
diff options
context:
space:
mode:
authorAdrian Herrmann <adrian.herrmann@qt.io>2024-07-03 19:08:32 +0200
committerAdrian Herrmann <adrian.herrmann@qt.io>2024-07-16 13:03:00 +0200
commitd0c80064e38f0d5ae8fbe048ac68cd597ec03efc (patch)
treeb75a209cf84b1f76aea518ac28dbf13a91295b23 /sources/pyside6/tests
parent4e0bafd38db84cd81760393cda048a84505643d2 (diff)
QtAsyncio: Don't cancel handle
It is not necessary to cancel a task's handle when cancelling said task, as the step function already handles the cancellation. Furthermore, cancelling the handle can cause issues with TaskGroups if an exception is raised inside the TaskGroup's context, where the tasks inside the group are not allowed to properly cancel and thus block the program. Pick-to: 6.7 Task-number: PYSIDE-769 Fixes: PYSIDE-2799 Change-Id: I1ab782380ffbe8c1ec40aba22b9ed2ebdcb1498f Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/tests')
-rw-r--r--sources/pyside6/tests/QtAsyncio/bug_2799.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/sources/pyside6/tests/QtAsyncio/bug_2799.py b/sources/pyside6/tests/QtAsyncio/bug_2799.py
new file mode 100644
index 000000000..eb86c7d4b
--- /dev/null
+++ b/sources/pyside6/tests/QtAsyncio/bug_2799.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+from __future__ import annotations
+
+"""Test cases for QtAsyncio"""
+
+import unittest
+import asyncio
+import sys
+
+import PySide6.QtAsyncio as QtAsyncio
+
+
+@unittest.skipIf(sys.version_info < (3, 11), "Requires ExceptionGroup")
+class QAsyncioTestCaseBug2799(unittest.TestCase):
+ async def job(self):
+ await asyncio.sleep(1)
+
+ async def main(self):
+ async with asyncio.TaskGroup() as tg:
+ tg.create_task(self.job())
+ raise RuntimeError()
+
+ def test_exception_group(self):
+ with self.assertRaises(ExceptionGroup):
+ QtAsyncio.run(self.main(), keep_running=False)
+
+
+if __name__ == "__main__":
+ unittest.main()