aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_exception_group.py
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2022-02-22 18:28:58 +0000
committerGitHub <noreply@github.com>2022-02-22 18:28:58 +0000
commit38b5acf8673ce42a401263a2528202e44d6ae60a (patch)
tree268428aef9ba81cf2d28a6b4e5b62cc2fe99cf40 /Lib/test/test_exception_group.py
parentbba8008f99d615a02984422a3825082bb5621f5a (diff)
downloadcpython-38b5acf8673ce42a401263a2528202e44d6ae60a.tar.gz
cpython-38b5acf8673ce42a401263a2528202e44d6ae60a.zip
bpo-46729: add number of sub-exceptions in str() of BaseExceptionGroup (GH-31294)
Diffstat (limited to 'Lib/test/test_exception_group.py')
-rw-r--r--Lib/test/test_exception_group.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/Lib/test/test_exception_group.py b/Lib/test/test_exception_group.py
index b7b53bb2f0e..8a55c826b83 100644
--- a/Lib/test/test_exception_group.py
+++ b/Lib/test/test_exception_group.py
@@ -102,6 +102,71 @@ class InstanceCreation(unittest.TestCase):
MyBEG)
+class StrAndReprTests(unittest.TestCase):
+ def test_ExceptionGroup(self):
+ eg = BaseExceptionGroup(
+ 'flat', [ValueError(1), TypeError(2)])
+
+ self.assertEqual(str(eg), "flat (2 sub-exceptions)")
+ self.assertEqual(repr(eg),
+ "ExceptionGroup('flat', [ValueError(1), TypeError(2)])")
+
+ eg = BaseExceptionGroup(
+ 'nested', [eg, ValueError(1), eg, TypeError(2)])
+
+ self.assertEqual(str(eg), "nested (4 sub-exceptions)")
+ self.assertEqual(repr(eg),
+ "ExceptionGroup('nested', "
+ "[ExceptionGroup('flat', "
+ "[ValueError(1), TypeError(2)]), "
+ "ValueError(1), "
+ "ExceptionGroup('flat', "
+ "[ValueError(1), TypeError(2)]), TypeError(2)])")
+
+ def test_BaseExceptionGroup(self):
+ eg = BaseExceptionGroup(
+ 'flat', [ValueError(1), KeyboardInterrupt(2)])
+
+ self.assertEqual(str(eg), "flat (2 sub-exceptions)")
+ self.assertEqual(repr(eg),
+ "BaseExceptionGroup("
+ "'flat', "
+ "[ValueError(1), KeyboardInterrupt(2)])")
+
+ eg = BaseExceptionGroup(
+ 'nested', [eg, ValueError(1), eg])
+
+ self.assertEqual(str(eg), "nested (3 sub-exceptions)")
+ self.assertEqual(repr(eg),
+ "BaseExceptionGroup('nested', "
+ "[BaseExceptionGroup('flat', "
+ "[ValueError(1), KeyboardInterrupt(2)]), "
+ "ValueError(1), "
+ "BaseExceptionGroup('flat', "
+ "[ValueError(1), KeyboardInterrupt(2)])])")
+
+ def test_custom_exception(self):
+ class MyEG(ExceptionGroup):
+ pass
+
+ eg = MyEG(
+ 'flat', [ValueError(1), TypeError(2)])
+
+ self.assertEqual(str(eg), "flat (2 sub-exceptions)")
+ self.assertEqual(repr(eg), "MyEG('flat', [ValueError(1), TypeError(2)])")
+
+ eg = MyEG(
+ 'nested', [eg, ValueError(1), eg, TypeError(2)])
+
+ self.assertEqual(str(eg), "nested (4 sub-exceptions)")
+ self.assertEqual(repr(eg), (
+ "MyEG('nested', "
+ "[MyEG('flat', [ValueError(1), TypeError(2)]), "
+ "ValueError(1), "
+ "MyEG('flat', [ValueError(1), TypeError(2)]), "
+ "TypeError(2)])"))
+
+
def create_simple_eg():
excs = []
try: