summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_sys_settrace.py48
-rw-r--r--Lib/test/test_trace.py5
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):