[pypy-commit] pypy py3tests: Add option to enable app-level assert rewriting; turn it off by default
rlamy
pypy.commits at gmail.com
Thu Mar 22 10:18:18 EDT 2018
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3tests
Changeset: r94072:aaa43023ad0d
Date: 2018-03-22 15:16 +0100
http://bitbucket.org/pypy/pypy/changeset/aaa43023ad0d/
Log: Add option to enable app-level assert rewriting; turn it off by
default
diff --git a/pypy/conftest.py b/pypy/conftest.py
--- a/pypy/conftest.py
+++ b/pypy/conftest.py
@@ -60,6 +60,9 @@
group.addoption('--raise-operr', action="store_true",
default=False, dest="raise_operr",
help="Show the interp-level OperationError in app-level tests")
+ group.addoption('--applevel-rewrite', action="store_true",
+ default=False, dest="applevel_rewrite",
+ help="Use assert rewriting in app-level test files (slow)")
@pytest.fixture(scope='function')
def space(request):
@@ -96,7 +99,8 @@
if not parent.config.getoption('runappdirect'):
if path.fnmatch(APPLEVEL_FN):
from pypy.tool.pytest.apptest2 import AppTestModule
- return AppTestModule(path, parent)
+ rewrite = parent.config.getoption('applevel_rewrite')
+ return AppTestModule(path, parent, rewrite_asserts=rewrite)
else:
return PyPyModule(path, parent)
diff --git a/pypy/tool/pytest/apptest2.py b/pypy/tool/pytest/apptest2.py
--- a/pypy/tool/pytest/apptest2.py
+++ b/pypy/tool/pytest/apptest2.py
@@ -11,6 +11,9 @@
class AppTestModule(pytest.Module):
+ def __init__(self, path, parent, rewrite_asserts=False):
+ super(AppTestModule, self).__init__(path, parent)
+ self.rewrite_asserts = rewrite_asserts
def collect(self):
_, source = app_rewrite._prepare_source(self.fspath)
@@ -19,16 +22,26 @@
os.path.join(pypydir, 'tool', 'pytest', 'ast-rewriter'))
w_source = space.newtext(source)
w_fname = space.newtext(str(self.fspath))
- w_mod = space.appexec([w_rootdir, w_source, w_fname],
- """(rootdir, source, fname):
- import sys
- sys.path.insert(0, rootdir)
- from ast_rewrite import rewrite_asserts, create_module
+ if self.rewrite_asserts:
+ w_mod = space.appexec([w_rootdir, w_source, w_fname],
+ """(rootdir, source, fname):
+ import sys
+ sys.path.insert(0, rootdir)
+ from ast_rewrite import rewrite_asserts, create_module
- co = rewrite_asserts(source, fname)
- mod = create_module(fname, co)
- return mod
- """)
+ co = rewrite_asserts(source, fname)
+ mod = create_module(fname, co)
+ return mod
+ """)
+ else:
+ w_mod = space.appexec([w_rootdir, w_source, w_fname],
+ """(rootdir, source, fname):
+ import sys
+ sys.path.insert(0, rootdir)
+ from ast_rewrite import create_module
+ co = compile(source, fname, 'exec')
+ return create_module(fname, co)
+ """)
mod_dict = w_mod.getdict(space).unwrap(space)
items = []
for name, w_obj in mod_dict.items():
More information about the pypy-commit
mailing list