summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_contextlib.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_contextlib.py')
-rw-r--r--Lib/test/test_contextlib.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py
index 3cc1944..a50a4ed 100644
--- a/Lib/test/test_contextlib.py
+++ b/Lib/test/test_contextlib.py
@@ -1287,6 +1287,24 @@ class TestSuppress(ExceptionIsLikeMixin, unittest.TestCase):
[KeyError("ke1"), KeyError("ke2")],
),
)
+ # Check handling of BaseExceptionGroup, using GeneratorExit so that
+ # we don't accidentally discard a ctrl-c with KeyboardInterrupt.
+ with suppress(GeneratorExit):
+ raise BaseExceptionGroup("message", [GeneratorExit()])
+ # If we raise a BaseException group, we can still suppress parts
+ with self.assertRaises(BaseExceptionGroup) as eg1:
+ with suppress(KeyError):
+ raise BaseExceptionGroup("message", [GeneratorExit("g"), KeyError("k")])
+ self.assertExceptionIsLike(
+ eg1.exception, BaseExceptionGroup("message", [GeneratorExit("g")]),
+ )
+ # If we suppress all the leaf BaseExceptions, we get a non-base ExceptionGroup
+ with self.assertRaises(ExceptionGroup) as eg1:
+ with suppress(GeneratorExit):
+ raise BaseExceptionGroup("message", [GeneratorExit("g"), KeyError("k")])
+ self.assertExceptionIsLike(
+ eg1.exception, ExceptionGroup("message", [KeyError("k")]),
+ )
class TestChdir(unittest.TestCase):