use different caches for optimized and unoptimized code (fixes #66)
This commit is contained in:
parent
574d230c22
commit
abe080c6b4
|
@ -1,6 +1,8 @@
|
||||||
Changes between 2.1.1 and [NEXT VERSION]
|
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
|
Changes between 2.1.0 and 2.1.1
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,9 @@ else:
|
||||||
PYTEST_TAG = "%s-%s%s-PYTEST" % (impl, ver[0], ver[1])
|
PYTEST_TAG = "%s-%s%s-PYTEST" % (impl, ver[0], ver[1])
|
||||||
del ver, impl
|
del ver, impl
|
||||||
|
|
||||||
|
PYC_EXT = ".py" + "c" if __debug__ else "o"
|
||||||
|
PYC_TAIL = "." + PYTEST_TAG + PYC_EXT
|
||||||
|
|
||||||
class AssertionRewritingHook(object):
|
class AssertionRewritingHook(object):
|
||||||
"""Import hook which rewrites asserts."""
|
"""Import hook which rewrites asserts."""
|
||||||
|
|
||||||
|
@ -121,7 +124,7 @@ class AssertionRewritingHook(object):
|
||||||
write = False
|
write = False
|
||||||
else:
|
else:
|
||||||
raise
|
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)
|
pyc = os.path.join(cache_dir, cache_name)
|
||||||
# Notice that even if we're in a read-only directory, I'm going to check
|
# 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...
|
# for a cached pyc. This may not be optimal...
|
||||||
|
|
|
@ -326,3 +326,17 @@ def test_no_bytecode():
|
||||||
assert not os.path.exists(os.path.dirname(__cached__))""")
|
assert not os.path.exists(os.path.dirname(__cached__))""")
|
||||||
monkeypatch.setenv("PYTHONDONTWRITEBYTECODE", "1")
|
monkeypatch.setenv("PYTHONDONTWRITEBYTECODE", "1")
|
||||||
assert testdir.runpytest().ret == 0
|
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
|
||||||
|
|
Loading…
Reference in New Issue