summaryrefslogtreecommitdiff
path: root/tests/test_parser.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-10-05 10:39:28 -0400
committerNed Batchelder <ned@nedbatchelder.com>2018-10-06 12:20:18 -0400
commitf12f8559c16ea172aac1f35fbe4f1b0232570df0 (patch)
tree617e51477552beb4eafbe0621df3814db108f3a2 /tests/test_parser.py
parent1f7a74b1446fc18bb9287b25351d490a1c6d60c7 (diff)
downloadpython-coveragepy-git-f12f8559c16ea172aac1f35fbe4f1b0232570df0.tar.gz
Finally jumps back to exiting lines
In Python 3.8, when a finally clause is run because a line in the try block is exiting the block, the exiting line is visited again after the finally block. (cherry picked from commit 04ff188349df84f73167108314e9698059830279)
Diffstat (limited to 'tests/test_parser.py')
-rw-r--r--tests/test_parser.py69
1 files changed, 50 insertions, 19 deletions
diff --git a/tests/test_parser.py b/tests/test_parser.py
index 5a51af3b..9786fe38 100644
--- a/tests/test_parser.py
+++ b/tests/test_parser.py
@@ -330,26 +330,57 @@ class ParserMissingArcDescriptionTest(CoverageTest):
this_thing(16)
that_thing(17)
""")
- self.assertEqual(
- parser.missing_arc_description(16, 17),
- "line 16 didn't jump to line 17, because the break on line 5 wasn't executed"
- )
- self.assertEqual(
- parser.missing_arc_description(16, 2),
- "line 16 didn't jump to line 2, "
- "because the continue on line 8 wasn't executed"
+ if env.PYBEHAVIOR.finally_jumps_back:
+ self.assertEqual(
+ parser.missing_arc_description(16, 5),
+ "line 16 didn't jump to line 5, because the break on line 5 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(5, 17),
+ "line 5 didn't jump to line 17, because the break on line 5 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(16, 8),
+ "line 16 didn't jump to line 8, because the continue on line 8 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(8, 2),
+ "line 8 didn't jump to line 2, because the continue on line 8 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(16, 12),
+ "line 16 didn't jump to line 12, because the return on line 12 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(12, -1),
+ "line 12 didn't return from function 'function', "
+ "because the return on line 12 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(16, -1),
+ "line 16 didn't except from function 'function', "
+ "because the raise on line 14 wasn't executed"
+ )
+ else:
+ self.assertEqual(
+ parser.missing_arc_description(16, 17),
+ "line 16 didn't jump to line 17, because the break on line 5 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(16, 2),
+ "line 16 didn't jump to line 2, "
+ "because the continue on line 8 wasn't executed"
+ " or "
+ "the continue on line 10 wasn't executed"
+ )
+ self.assertEqual(
+ parser.missing_arc_description(16, -1),
+ "line 16 didn't except from function 'function', "
+ "because the raise on line 14 wasn't executed"
" or "
- "the continue on line 10 wasn't executed"
- )
- self.assertEqual(
- parser.missing_arc_description(16, -1),
- "line 16 didn't except from function 'function', "
- "because the raise on line 14 wasn't executed"
- " or "
- "line 16 didn't return from function 'function', "
- "because the return on line 12 wasn't executed"
- )
-
+ "line 16 didn't return from function 'function', "
+ "because the return on line 12 wasn't executed"
+ )
def test_missing_arc_descriptions_bug460(self):
parser = self.parse_text(u"""\
x = 1