Skip to content
New issue

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

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

Already on GitHub? # to your account

Support '# pragma: no branch' in multi-line if statements (fix #754) #1773

Merged
merged 1 commit into from
May 2, 2024

Conversation

devdanzin
Copy link
Contributor

@devdanzin devdanzin commented May 1, 2024

PythonParser.lines_matching() records a set of lines matching a given regex. However, it doesn't take multi-line statements into account. That causes statements that should be marked as "# pragma: no branch" to be counted as partial branches. IOW, "a pragma comment on the continuation lines of a multi-line if-statement won't have an effect".

This PR fixes that by mapping line numbers through parser._multiline, so that the number of the first line in a multi-line statement gets recorded instead.

Fixes #754.

@nedbat nedbat force-pushed the fix_lines_matching_multiline branch from 31b10a0 to 0dd522e Compare May 2, 2024 21:31
@nedbat
Copy link
Owner

nedbat commented May 2, 2024

Thanks! A simple fix, I should have thought of it.

@nedbat nedbat merged commit 277c8c4 into nedbat:master May 2, 2024
35 checks passed
nedbat added a commit that referenced this pull request May 2, 2024
@devdanzin devdanzin deleted the fix_lines_matching_multiline branch May 2, 2024 22:20
@nedbat
Copy link
Owner

nedbat commented May 4, 2024

This is now released as part of coverage 7.5.1.

renovate bot referenced this pull request in allenporter/flux-local May 4, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [coverage](https://github.com/nedbat/coveragepy) | `==7.5.0` ->
`==7.5.1` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/coverage/7.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/coverage/7.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/coverage/7.5.0/7.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/coverage/7.5.0/7.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>nedbat/coveragepy (coverage)</summary>

###
[`v7.5.1`](https://github.com/nedbat/coveragepy/blob/HEAD/CHANGES.rst#Version-751--2024-05-04)

[Compare
Source](https://github.com/nedbat/coveragepy/compare/7.5.0...7.5.1)

- Fix: a pragma comment on the continuation lines of a multi-line
statement
now excludes the statement and its body, the same as if the pragma is
on the first line. This closes `issue 754`*. The fix was contributed by
    `Daniel Diniz <pull 1773_>`*.

- Fix: very complex source files like `this one <resolvent_lookup_>`\_
could
cause a maximum recursion error when creating an HTML report. This is
now
    fixed, closing `issue 1774`\_.

-   HTML report improvements:

- Support files (JavaScript and CSS) referenced by the HTML report now
have
hashes added to their names to ensure updated files are used instead of
        stale cached copies.

- Missing branch coverage explanations that said "the condition was
never
false" now read "the condition was always true" because it's easier to
        understand.

- Column sort order is remembered better as you move between the index
pages,
        fixing `issue 1766`*.  Thanks, `Daniel Diniz <pull 1768_>`*.

.. \_resolvent_lookup:
https://github.com/sympy/sympy/blob/130950f3e6b3f97fcc17f4599ac08f70fdd2e9d4/sympy/polys/numberfields/resolvent_lookup.py
.. \_issue
754[https://github.com/nedbat/coveragepy/issues/754](https://github.com/nedbat/coveragepy/issues/754)54
.. \_issue
176[https://github.com/nedbat/coveragepy/issues/1766](https://github.com/nedbat/coveragepy/issues/1766)766
.. \_pull
17[https://github.com/nedbat/coveragepy/pull/1768](https://github.com/nedbat/coveragepy/pull/1768)1768
.. \_pull
1[https://github.com/nedbat/coveragepy/pull/1773](https://github.com/nedbat/coveragepy/pull/1773)/1773
.. \_issue
[https://github.com/nedbat/coveragepy/issues/1774](https://github.com/nedbat/coveragepy/issues/1774)s/1774

.. \_changes\_7-5-0:

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/allenporter/flux-local).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMzEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjMzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pragmas on continued long lines don't work
2 participants