From 858c44bb1007511a69e0ed9ea60ccd3f9fe3eb56 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 7 Jan 2016 19:42:42 -0500 Subject: Add tests of multiline lambdas, though i don't quite understand the line numbers involved --- coverage/parser.py | 5 ++--- tests/test_arcs.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/coverage/parser.py b/coverage/parser.py index c03a308..9f7400e 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -312,8 +312,8 @@ class FunctionBlock(object): class TryBlock(object): def __init__(self, handler_start=None, final_start=None): - self.handler_start = handler_start # TODO: is this used? - self.final_start = final_start # TODO: is this used? + self.handler_start = handler_start + self.final_start = final_start self.break_from = set() self.continue_from = set() self.return_from = set() @@ -716,7 +716,6 @@ class AstArcAnalyzer(object): start = self.line_for_node(node) self.arcs.add((-1, start)) self.arcs.add((start, -start)) - # TODO: test multi-line lambdas def contains_return_expression(self, node): """Is there a yield-from or await in `node` someplace?""" diff --git a/tests/test_arcs.py b/tests/test_arcs.py index 28c1df7..c52bc8a 100644 --- a/tests/test_arcs.py +++ b/tests/test_arcs.py @@ -1031,6 +1031,34 @@ class DecoractorArcTest(CoverageTest): ) +class LambdaArcTest(CoverageTest): + """Tests of lambdas""" + + def test_lambda(self): + self.check_coverage("""\ + fn = (lambda x: + x + 2 + ) + assert fn(4) == 6 + """, + arcz=".1 14 4-1 1-1", + ) + self.check_coverage("""\ + + fn = \\ + ( + lambda + x: + x + + + 8 + ) + assert fn(10) == 18 + """, + arcz=".2 2A A-4 2-4", + ) + + class AsyncTest(CoverageTest): """Tests of the new async and await keywords in Python 3.5""" @@ -1108,7 +1136,6 @@ class AsyncTest(CoverageTest): async with x: pass """, - # TODO: we don't run any code, so many arcs are missing. arcz=".1 1. .2 23 3.", arcz_missing=".2 23 3.", ) -- cgit v1.2.1