diff options
-rw-r--r-- | coverage/env.py | 8 | ||||
-rw-r--r-- | tests/test_coverage.py | 6 |
2 files changed, 10 insertions, 4 deletions
diff --git a/coverage/env.py b/coverage/env.py index 5d69a234..b2229281 100644 --- a/coverage/env.py +++ b/coverage/env.py @@ -106,11 +106,17 @@ class PYBEHAVIOR: # Lines after break/continue/return/raise are no longer compiled into the # bytecode. They used to be marked as missing, now they aren't executable. - omit_after_jump = pep626 + omit_after_jump = ( + pep626 + or (PYPY and PYVERSION >= (3, 9) and PYPYVERSION >= (7, 3, 12)) + ) # PyPy has always omitted statements after return. omit_after_return = omit_after_jump or PYPY + # Optimize away unreachable try-else clauses. + optimize_unreachable_try_else = pep626 + # Modules used to have firstlineno equal to the line number of the first # real line of code. Now they always start at 1. module_firstline_1 = pep626 diff --git a/tests/test_coverage.py b/tests/test_coverage.py index 1992ebb8..1cade9cb 100644 --- a/tests/test_coverage.py +++ b/tests/test_coverage.py @@ -1121,7 +1121,7 @@ class CompoundStatementTest(CoverageTest): ) def test_try_except_stranded_else(self) -> None: - if env.PYBEHAVIOR.omit_after_jump: + if env.PYBEHAVIOR.optimize_unreachable_try_else: # The else can't be reached because the try ends with a raise. lines = [1,2,3,4,5,6,9] missing = "" @@ -1498,7 +1498,7 @@ class ExcludeTest(CoverageTest): ) def test_excluding_try_except_stranded_else(self) -> None: - if env.PYBEHAVIOR.omit_after_jump: + if env.PYBEHAVIOR.optimize_unreachable_try_else: # The else can't be reached because the try ends with a raise. arcz = ".1 12 23 34 45 56 69 9." arcz_missing = "" @@ -1801,7 +1801,7 @@ class Py25Test(CoverageTest): ) def test_try_except_finally_stranded_else(self) -> None: - if env.PYBEHAVIOR.omit_after_jump: + if env.PYBEHAVIOR.optimize_unreachable_try_else: # The else can't be reached because the try ends with a raise. lines = [1,2,3,4,5,6,10,11] missing = "" |