Skip to content

Commit

Permalink
Merge pull request #2350 from nicoddemus/future-imports-rewrite
Browse files Browse the repository at this point in the history
Ensure rewritten modules don't inherit __future__ flags from pytest
  • Loading branch information
nicoddemus authored Apr 11, 2017
2 parents 02da278 + 1b5f898 commit 78ac1bf
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
2 changes: 1 addition & 1 deletion _pytest/assertion/rewrite.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
18 changes: 18 additions & 0 deletions testing/test_assertrewrite.py
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,24 @@ def test():
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):
Expand Down

0 comments on commit 78ac1bf

Please sign in to comment.