Merge pull request #2350 from nicoddemus/future-imports-rewrite

Ensure rewritten modules don't inherit __future__ flags from pytest
This commit is contained in:
Bruno Oliveira 2017-04-11 20:59:05 -03:00 committed by GitHub
commit 78ac1bf5d1
2 changed files with 19 additions and 1 deletions

View File

@ -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.

View File

@ -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):