Ensure rewritten modules don't inherit __future__ flags from pytest
In a recent refactoring we enabled all __future__ features in pytest modules, but that has the unwanted side effect of propagating those features to compile()'d modules inside assertion rewriting, unless we pass dont_inherit=False to compile().
This commit is contained in:
parent
83b241b449
commit
1b5f898dc5
|
@ -337,7 +337,7 @@ def _rewrite_test(config, fn):
|
|||
return None, None
|
||||
rewrite_asserts(tree, fn, config)
|
||||
try:
|
||||
co = compile(tree, fn.strpath, "exec")
|
||||
co = compile(tree, fn.strpath, "exec", dont_inherit=True)
|
||||
except SyntaxError:
|
||||
# It's possible that this error is from some bug in the
|
||||
# assertion rewriting, but I don't know of a fast way to tell.
|
||||
|
|
|
@ -712,6 +712,24 @@ def test_rewritten():
|
|||
result.stdout.fnmatch_lines(['*= 1 passed in *=*'])
|
||||
assert 'pytest-warning summary' not in result.stdout.str()
|
||||
|
||||
@pytest.mark.skipif(sys.version_info[0] > 2, reason='python 2 only')
|
||||
def test_rewrite_future_imports(self, testdir):
|
||||
"""Test that rewritten modules don't inherit the __future__ flags
|
||||
from the assertrewrite module.
|
||||
|
||||
assertion.rewrite imports __future__.division (and others), so
|
||||
ensure rewritten modules don't inherit those flags.
|
||||
|
||||
The test below will fail if __future__.division is enabled
|
||||
"""
|
||||
testdir.makepyfile('''
|
||||
def test():
|
||||
x = 1 / 2
|
||||
assert type(x) is int
|
||||
''')
|
||||
result = testdir.runpytest()
|
||||
assert result.ret == 0
|
||||
|
||||
|
||||
class TestAssertionRewriteHookDetails(object):
|
||||
def test_loader_is_package_false_for_module(self, testdir):
|
||||
|
|
Loading…
Reference in New Issue