PyPy3.8 7.3.10 release should have trace_decorated_def=True · Issue #1515 · nedbat/coveragepy (original) (raw)

Describe the bug
Over in the PyPy issue tracker, we are working on why the recently released PyPy3.8 v7.3.10 fails to pass the coverage tests of pypa/bcrypt. It turns out we changed ast parsing between v7.3.9 and v7.3.10. The parsing is now more like CPython3.8, which means this line needs a tweak

trace_decorated_def = (CPYTHON and PYVERSION >= (3, 8)) or (PYPY and PYVERSION >= (3, 9))

To Reproduce
How can we reproduce the problem? Please be specific. Don't link to a failing CI job. Answer the questions below:

  1. What version of Python are you using?
    PyPy3.8 v7.3.10
  2. What version of coverage.py shows the problem? The output of coverage debug sys is helpful.
    coverage 7.0.1
  3. What versions of what packages do you have installed? The output of pip freeze is helpful.
    bcrypt 4.0.1
    pytest 4.6.11
    coverage 7.0.1
  4. What code shows the problem? Give us a specific commit of a specific repo that we can check out. If you've already worked around the problem, please provide a commit before that fix.
    trace_decorated_def = (CPYTHON and PYVERSION >= (3, 8)) or (PYPY and PYVERSION >= (3, 9))
  5. What commands did you run?
# in a bcrypt git repo
pypy -m coverage run -m pytest --strict-markers
pypy -m coverage combine
pypy -m coverage report -m --fail-under 100
Name                   Stmts   Miss Branch BrPart  Cover   Missing
-------------------------------------------------------
bcrypt/__about__.py      12      0      0      0   100%
bcrypt/__init__.py       38      0     18      0   100%
tests/test_bcrypt.py     97      9     24      0    78%   208, 214, 230, 235, 240, 245, 250, 447, 486
-------------------------------------------------------
TOTAL                   147      9     42      0    86%
Coverage failure: total of 86 is less than fail-under=100

Expected behavior
Tests are expected to pass

Additional context

I think it is sufficient to modify the line to this, which is "any implementation 3.8 or greater, or pypy greater than 3.8 or pypy3.8 greater than 7.3.9 (7.3.9 was the last pypy3.7)

trace_decorated_def = (PYVERSION >= (3, 8)) and (not PYPY or (PYVERSION > (3, 8)) or (PYPYVERSION > (7, 3, 9)))