Skip to content

"Jump to the function exit" in lcov report for branch at top level of module #1874

Closed
@zackw

Description

@zackw

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions