PyPy 3.7 doesn't act exactly like CPython 3.7
diff --git a/coverage/env.py b/coverage/env.py
index b5da3b4..80153ec 100644
--- a/coverage/env.py
+++ b/coverage/env.py
@@ -66,7 +66,7 @@
# used to be an empty string (meaning the current directory). It changed
# to be the actual path to the current directory, so that os.chdir wouldn't
# affect the outcome.
- actual_syspath0_dash_m = (PYVERSION >= (3, 7, 0, 'beta', 3))
+ actual_syspath0_dash_m = (not PYPY) and (PYVERSION >= (3, 7, 0, 'beta', 3))
# When a break/continue/return statement in a try block jumps to a finally
# block, does the finally block do the break/continue/return (pre-3.8), or
diff --git a/tests/test_parser.py b/tests/test_parser.py
index 03bf25d..0e6a085 100644
--- a/tests/test_parser.py
+++ b/tests/test_parser.py
@@ -214,7 +214,7 @@
expected_arcs = set(arcz_to_arcs(".1 14 48 8. .2 2. -8A A-8"))
expected_exits = {1: 1, 2: 1, 4: 1, 8: 1, 10: 1}
- if env.PYVERSION >= (3, 7, 0, 'beta', 5):
+ if (not env.PYPY) and (env.PYVERSION >= (3, 7, 0, 'beta', 5)):
# 3.7 changed how functions with only docstrings are numbered.
expected_arcs.update(set(arcz_to_arcs("-46 6-4")))
expected_exits.update({6: 1})
diff --git a/tests/test_process.py b/tests/test_process.py
index 25f1fcc..bf0e1ac 100644
--- a/tests/test_process.py
+++ b/tests/test_process.py
@@ -743,7 +743,7 @@
self.assertGreater(line_counts(data)['os.py'], 50)
@xfail(
- env.PYPY3 and env.PYPYVERSION >= (7, 1, 1),
+ env.PYPY3 and ((7, 1, 1) <= env.PYPYVERSION < (7, 3)),
"https://bitbucket.org/pypy/pypy/issues/3074"
)
def test_lang_c(self):