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

Conversation

zackw
Copy link
Contributor

@zackw zackw commented Sep 11, 2024

I'd prefer not to have this land until #1850 is addressed because its behavior for if any(genexpr) is really dang confusing, arguably worse than what we're doing without this patchset.

Because of the refactor in the first commit, functional changes will be easier to see if you go commit by commit.

Zack Weinberg added 3 commits September 11, 2024 14:06
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.
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.
Quite straightforward: a function has been executed if any of its region’s
lines have been executed.
@zackw zackw marked this pull request as draft September 11, 2024 20:28
Should fix the test failures with pypy pretending to be python 3.8.
Zack Weinberg added 3 commits September 16, 2024 10:35
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant