Author: Ronan Lamy <ronan.l...@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(): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit