use different caches for optimized and unoptimized code (fixes #66)

This commit is contained in:
Benjamin Peterson 2011-08-29 10:13:00 -04:00
parent 574d230c22
commit abe080c6b4
3 changed files with 20 additions and 1 deletions

View File

@ -1,6 +1,8 @@
Changes between 2.1.1 and [NEXT VERSION]
----------------------------------------
- fix issue66: use different assertion rewriting caches when the -O option is passed
Changes between 2.1.0 and 2.1.1
----------------------------------------------

View File

@ -35,6 +35,9 @@ else:
PYTEST_TAG = "%s-%s%s-PYTEST" % (impl, ver[0], ver[1])
del ver, impl
PYC_EXT = ".py" + "c" if __debug__ else "o"
PYC_TAIL = "." + PYTEST_TAG + PYC_EXT
class AssertionRewritingHook(object):
"""Import hook which rewrites asserts."""
@ -121,7 +124,7 @@ class AssertionRewritingHook(object):
write = False
else:
raise
cache_name = fn_pypath.basename[:-3] + "." + PYTEST_TAG + ".pyc"
cache_name = fn_pypath.basename[:-3] + PYC_TAIL
pyc = os.path.join(cache_dir, cache_name)
# Notice that even if we're in a read-only directory, I'm going to check
# for a cached pyc. This may not be optimal...

View File

@ -326,3 +326,17 @@ def test_no_bytecode():
assert not os.path.exists(os.path.dirname(__cached__))""")
monkeypatch.setenv("PYTHONDONTWRITEBYTECODE", "1")
assert testdir.runpytest().ret == 0
def test_pyc_vs_pyo(self, testdir, monkeypatch):
testdir.makepyfile("""
import pytest
def test_optimized():
"hello"
assert test_optimized.__doc__ is None""")
p = py.path.local.make_numbered_dir(prefix="runpytest-", keep=None,
rootdir=testdir.tmpdir)
tmp = "--basetemp=%s" % p
monkeypatch.setenv("PYTHONOPTIMIZE", "2")
assert testdir.runpybin("py.test", tmp).ret == 0
monkeypatch.undo()
assert testdir.runpybin("py.test", tmp).ret == 1