diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2016-12-31 09:48:34 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2016-12-31 09:48:34 -0500 |
commit | cb491e7f906cd0dca3718cc05bc00b738b638f7d (patch) | |
tree | 1f956ec952fc8438c8baedf593816721b40b83a0 | |
parent | b04a2edd0b3795565982e362bae9414a0e38dbe3 (diff) | |
download | python-coveragepy-git-cb491e7f906cd0dca3718cc05bc00b738b638f7d.tar.gz |
The PyPy-specific test for atexit/gettrace are also PyPy-version-specific...
-rw-r--r-- | coverage/env.py | 2 | ||||
-rw-r--r-- | coverage/pytracer.py | 2 | ||||
-rw-r--r-- | tests/test_oddball.py | 4 |
3 files changed, 5 insertions, 3 deletions
diff --git a/coverage/env.py b/coverage/env.py index 4cd02c04..6db3b857 100644 --- a/coverage/env.py +++ b/coverage/env.py @@ -12,6 +12,8 @@ LINUX = sys.platform == "linux2" # Python implementations. PYPY = '__pypy__' in sys.builtin_module_names +if PYPY: + PYPYVERSION = sys.pypy_version_info # Python versions. PYVERSION = sys.version_info diff --git a/coverage/pytracer.py b/coverage/pytracer.py index 13a3b0c8..6cd3ea30 100644 --- a/coverage/pytracer.py +++ b/coverage/pytracer.py @@ -153,7 +153,7 @@ class PyTracer(object): # so don't warn if we are in atexit on PyPy and the trace function # has changed to None. tf = sys.gettrace() - dont_warn = (env.PYPY and self.in_atexit and tf is None) + dont_warn = (env.PYPY and env.PYPYVERSION >= (5, 4) and self.in_atexit and tf is None) if (not dont_warn) and tf != self._trace: self.warn("Trace function changed, measurement is likely wrong: %r" % (tf,)) diff --git a/tests/test_oddball.py b/tests/test_oddball.py index dce65b4e..d188aa78 100644 --- a/tests/test_oddball.py +++ b/tests/test_oddball.py @@ -515,8 +515,8 @@ class GettraceTest(CoverageTest): """) status, out = self.run_command_status("python atexit_gettrace.py") self.assertEqual(status, 0) - if env.PYPY: - # PyPy clears the trace function before atexit runs. + if env.PYPY and env.PYPYVERSION >= (5, 4): + # Newer PyPy clears the trace function before atexit runs. self.assertEqual(out, "None\n") else: # Other Pythons leave the trace function in place. |