Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Lcov report improvements part 2 #1851

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from

Commits on Sep 11, 2024

  1. [lcov] Refactor LcovReporter.lcov_file

    Split the bulk of the code in LcovReporter.lcov_file out into two free helper
    functions, lcov_lines and lcov_arcs.  This is easier to read and will make it
    easier to do future planned changes in a type-safe manner.
    
    No functional changes in this commit.
    Zack Weinberg committed Sep 11, 2024
    Configuration menu
    Copy the full SHA
    923ba5a View commit details
    Browse the repository at this point in the history
  2. [lcov] Improve reporting of branch destinations.

    The branch field of a BRDA: record can be an arbitrary textual label.
    Therefore, instead of emitting meaningless numbers, emit the string
    “to line <N>” for ordinary branches (where <N> is the arc destination
    line, and “to exit” for branches that exit the function.  When there is
    more than one exit arc from a single line, provide the negated arc
    destination as a disambiguator.
    
    Thanks to Henry Cox (@henry2cox), one of the LCOV maintainers, for
    clarifying the semantics of BRDA: records for us.
    Zack Weinberg committed Sep 11, 2024
    Configuration menu
    Copy the full SHA
    583961e View commit details
    Browse the repository at this point in the history
  3. Implement function coverage reporting in lcov reports.

    Quite straightforward: a function has been executed if any of its region’s
    lines have been executed.
    Zack Weinberg committed Sep 11, 2024
    Configuration menu
    Copy the full SHA
    bfc3e7c View commit details
    Browse the repository at this point in the history

Commits on Sep 12, 2024

  1. [lcov] Ignore vacuous function regions.

    Should fix the test failures with pypy pretending to be python 3.8.
    Zack Weinberg committed Sep 12, 2024
    Configuration menu
    Copy the full SHA
    347bf16 View commit details
    Browse the repository at this point in the history

Commits on Sep 16, 2024

  1. Adjust test expectations for lcov reports generated under PyPy 3.8.

    There is a bug somewhere, in which if we collect data in --branch mode under
    PyPy 3.8, regions for top-level functions come out of the analysis engine with
    empty lines arrays.  The previous commit prevented this from crashing the lcov
    reporter; this commit adjusts the tests of the lcov reporter so that we expect
    the function records affected by the bug to be missing.
    
    I don’t think it’s worth trying to pin down the cause of the bug, since Python
    3.8 is approaching end-of-life for both CPython and PyPy.
    Zack Weinberg committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    af70eb9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c8d7397 View commit details
    Browse the repository at this point in the history
  3. add a fourth case to the tests for nedbat#1852

    Zack Weinberg committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    402bee8 View commit details
    Browse the repository at this point in the history