diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-03-23 12:46:45 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-23 12:46:45 (GMT) |
commit | 397466dfd905b5132f1c831cd9dff3ecc40b3218 (patch) | |
tree | 264d63b490acd0aca934ace77528006bce1d882e /Lib | |
parent | 702f8f3611bc49b73772cce2b9b041bd11ff9b35 (diff) | |
download | cpython-397466dfd905b5132f1c831cd9dff3ecc40b3218.zip cpython-397466dfd905b5132f1c831cd9dff3ecc40b3218.tar.gz cpython-397466dfd905b5132f1c831cd9dff3ecc40b3218.tar.bz2 |
bpo-30953: Improve error messages and add tests for jumping (GH-6196)
into/out of an except block.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_sys_settrace.py | 70 |
1 files changed, 64 insertions, 6 deletions
diff --git a/Lib/test/test_sys_settrace.py b/Lib/test/test_sys_settrace.py index 1fa43b2..f5125a4 100644 --- a/Lib/test/test_sys_settrace.py +++ b/Lib/test/test_sys_settrace.py @@ -1201,8 +1201,16 @@ class JumpTestCase(unittest.TestCase): output.append(7) output.append(8) - @jump_test(3, 6, [2, 5, 6], (ValueError, 'finally')) + @jump_test(1, 5, [], (ValueError, "into a 'finally'")) def test_no_jump_into_finally_block(output): + output.append(1) + try: + output.append(3) + finally: + output.append(5) + + @jump_test(3, 6, [2, 5, 6], (ValueError, "into a 'finally'")) + def test_no_jump_into_finally_block_from_try_block(output): try: output.append(2) output.append(3) @@ -1211,21 +1219,71 @@ class JumpTestCase(unittest.TestCase): output.append(6) output.append(7) - @jump_test(1, 5, [], (ValueError, 'finally')) - def test_no_jump_into_finally_block_2(output): + @jump_test(5, 1, [1, 3], (ValueError, "out of a 'finally'")) + def test_no_jump_out_of_finally_block(output): output.append(1) try: output.append(3) finally: output.append(5) - @jump_test(5, 1, [1, 3], (ValueError, 'finally')) - def test_no_jump_out_of_finally_block(output): + @jump_test(1, 5, [], (ValueError, "into an 'except'")) + def test_no_jump_into_bare_except_block(output): output.append(1) try: output.append(3) - finally: + except: + output.append(5) + + @jump_test(1, 5, [], (ValueError, "into an 'except'")) + def test_no_jump_into_qualified_except_block(output): + output.append(1) + try: + output.append(3) + except Exception: + output.append(5) + + @jump_test(3, 6, [2, 5, 6], (ValueError, "into an 'except'")) + def test_no_jump_into_bare_except_block_from_try_block(output): + try: + output.append(2) + output.append(3) + except: # executed if the jump is failed output.append(5) + output.append(6) + raise + output.append(8) + + @jump_test(3, 6, [2], (ValueError, "into an 'except'")) + def test_no_jump_into_qualified_except_block_from_try_block(output): + try: + output.append(2) + output.append(3) + except ZeroDivisionError: + output.append(5) + output.append(6) + raise + output.append(8) + + @jump_test(7, 1, [1, 3, 6], (ValueError, "out of an 'except'")) + def test_no_jump_out_of_bare_except_block(output): + output.append(1) + try: + output.append(3) + 1/0 + except: + output.append(6) + output.append(7) + + @jump_test(7, 1, [1, 3, 6], (ValueError, "out of an 'except'")) + def test_no_jump_out_of_qualified_except_block(output): + output.append(1) + try: + output.append(3) + 1/0 + except Exception: + output.append(6) + output.append(7) @jump_test(3, 5, [1, 2, -2], (ValueError, 'into')) def test_no_jump_between_with_blocks(output): |