"Jump to the function exit" in lcov report for branch at top level of module · Issue #1874 · nedbat/coveragepy (original) (raw)
This rather peculiar test case was delta-minimized from real code (appdirs.py 1.4.1). It is formatting sensitive. In particular, removing the #!
line or moving the close parenthesis that's currently on a line by itself to the return bar(
line will break it.
#! /usr/bin/env python
def foo():
return bar(
)
if "x" == "y": # line 5
pass
Running coverage run --branch
and then coverage lcov
on this test case will produce these branch coverage records:
BRDA:5,0,jump to line 6,0
BRDA:5,0,jump to the function exit,1
BRF:2
BRH:1
But line 5 is not in a function. We should instead get
BRDA:5,0,jump to line 6,0
BRDA:5,0,exit the module,1
which is what we do get if the close paren on line 4 is moved to line 3 (modulo #1873).
I presume that the code on lines 1-4 has confused the static analysis engine into thinking line 5 is inside a function, but then the arc description logic can't get a name for that function (because it doesn't exist).