From a310fd83a014484b8c680de83540c4908b344c6c Mon Sep 17 00:00:00 2001 From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Tue, 7 Dec 2021 10:50:37 +0000 Subject: bpo-45890: Add tests for tracing try-except-finally blocks (GH-29746) --- Lib/test/test_sys_settrace.py | 48 +++++++++++++++++++++++++++++++++++++++++-- Lib/test/test_trace.py | 5 +++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index b565bef..15c33a2 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -642,15 +642,18 @@ class TraceTestCase(unittest.TestCase): 2 except: 4 - finally: + else: 6 + finally: + 8 self.run_and_compare(func, [(0, 'call'), (1, 'line'), (2, 'line'), (6, 'line'), - (6, 'return')]) + (8, 'line'), + (8, 'return')]) def test_nested_loops(self): @@ -1016,6 +1019,47 @@ class TraceTestCase(unittest.TestCase): (3, 'line'), (3, 'return')]) + def test_try_in_try_with_exception(self): + + def func(): + try: + try: + raise TypeError + except ValueError as ex: + 5 + except TypeError: + 7 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (3, 'exception'), + (4, 'line'), + (6, 'line'), + (7, 'line'), + (7, 'return')]) + + def func(): + try: + try: + raise ValueError + except ValueError as ex: + 5 + except TypeError: + 7 + + self.run_and_compare(func, + [(0, 'call'), + (1, 'line'), + (2, 'line'), + (3, 'line'), + (3, 'exception'), + (4, 'line'), + (5, 'line'), + (5, 'return')]) + def test_if_in_if_in_if(self): def func(a=0, p=1, z=1): if p: diff --git a/Lib/test/test_trace.py b/Lib/test/test_trace.py index dbfefca..d63c177 100644 --- a/Lib/test/test_trace.py +++ b/Lib/test/test_trace.py @@ -11,6 +11,11 @@ from trace import Trace from test.tracedmodules import testmod +## +## See also test_sys_settrace.py, which contains tests that cover +## tracing of many more code blocks. +## + #------------------------------- Utilities -----------------------------------# def fix_ext_py(filename): -- cgit v0.12