Use exec directly

This commit is contained in:
Anthony Sottile 2019-05-06 23:07:39 -07:00
parent 6d259c400e
commit d1a48ad68f
9 changed files with 10 additions and 16 deletions

View File

@ -1,4 +1,2 @@
import six
for i in range(1000): for i in range(1000):
six.exec_("def test_func_%d(): pass" % i) exec("def test_func_%d(): pass" % i)

View File

@ -1,5 +1,3 @@
import six
import _pytest._code import _pytest._code
import pytest import pytest
from pytest import raises from pytest import raises
@ -199,7 +197,7 @@ def test_dynamic_compile_shows_nicely():
name = "abc-123" name = "abc-123"
module = imp.new_module(name) module = imp.new_module(name)
code = _pytest._code.compile(src, name, "exec") code = _pytest._code.compile(src, name, "exec")
six.exec_(code, module.__dict__) exec(code, module.__dict__)
sys.modules[name] = module sys.modules[name] = module
module.foo() module.foo()

View File

@ -460,7 +460,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
name = "abc-123" name = "abc-123"
module = imp.new_module(name) module = imp.new_module(name)
code = _pytest._code.compile(src, name, "exec") code = _pytest._code.compile(src, name, "exec")
six.exec_(code, module.__dict__) exec(code, module.__dict__)
sys.modules[name] = module sys.modules[name] = module
> module.foo() > module.foo()

View File

@ -13,7 +13,6 @@ from weakref import ref
import attr import attr
import pluggy import pluggy
import py import py
import six
from six import text_type from six import text_type
import _pytest import _pytest
@ -138,7 +137,7 @@ class Frame(object):
""" """
f_locals = self.f_locals.copy() f_locals = self.f_locals.copy()
f_locals.update(vars) f_locals.update(vars)
six.exec_(code, self.f_globals, f_locals) exec(code, self.f_globals, f_locals)
def repr(self, object): def repr(self, object):
""" return a 'safe' (non-recursive, one-line) string repr for 'object' """ return a 'safe' (non-recursive, one-line) string repr for 'object'

View File

@ -296,7 +296,7 @@ class AssertionRewritingHook(object):
mod.__loader__ = self mod.__loader__ = self
# Normally, this attribute is 3.4+ # Normally, this attribute is 3.4+
mod.__spec__ = spec_from_file_location(name, co.co_filename, loader=self) mod.__spec__ = spec_from_file_location(name, co.co_filename, loader=self)
six.exec_(co, mod.__dict__) exec(co, mod.__dict__)
except: # noqa except: # noqa
if name in sys.modules: if name in sys.modules:
del sys.modules[name] del sys.modules[name]

View File

@ -7,7 +7,6 @@ import warnings
from decimal import Decimal from decimal import Decimal
from numbers import Number from numbers import Number
import six
from more_itertools.more import always_iterable from more_itertools.more import always_iterable
from six.moves import filterfalse from six.moves import filterfalse
from six.moves import zip from six.moves import zip
@ -702,7 +701,7 @@ def raises(expected_exception, *args, **kwargs):
# print "raises frame scope: %r" % frame.f_locals # print "raises frame scope: %r" % frame.f_locals
try: try:
code = _pytest._code.Source(code).compile(_genframe=frame) code = _pytest._code.Source(code).compile(_genframe=frame)
six.exec_(code, frame.f_globals, loc) exec(code, frame.f_globals, loc)
# XXX didn't mean f_globals == f_locals something special? # XXX didn't mean f_globals == f_locals something special?
# this is destroyed here ... # this is destroyed here ...
except expected_exception: except expected_exception:

View File

@ -102,7 +102,7 @@ def warns(expected_warning, *args, **kwargs):
with WarningsChecker(expected_warning): with WarningsChecker(expected_warning):
code = _pytest._code.Source(code).compile() code = _pytest._code.Source(code).compile()
six.exec_(code, frame.f_globals, loc) exec(code, frame.f_globals, loc)
else: else:
func = args[0] func = args[0]
with WarningsChecker(expected_warning): with WarningsChecker(expected_warning):

View File

@ -312,7 +312,7 @@ class TestSourceParsingAndCompiling(object):
def test_compile_and_getsource(self): def test_compile_and_getsource(self):
co = self.source.compile() co = self.source.compile()
six.exec_(co, globals()) exec(co, globals())
f(7) f(7)
excinfo = pytest.raises(AssertionError, f, 6) excinfo = pytest.raises(AssertionError, f, 6)
frame = excinfo.traceback[-1].frame frame = excinfo.traceback[-1].frame
@ -376,7 +376,7 @@ def test_getfuncsource_dynamic():
def g(): pass def g(): pass
""" """
co = _pytest._code.compile(source) co = _pytest._code.compile(source)
six.exec_(co, globals()) exec(co, globals())
assert str(_pytest._code.Source(f)).strip() == "def f():\n raise ValueError" assert str(_pytest._code.Source(f)).strip() == "def f():\n raise ValueError"
assert str(_pytest._code.Source(g)).strip() == "def g(): pass" assert str(_pytest._code.Source(g)).strip() == "def g(): pass"

View File

@ -52,7 +52,7 @@ def getmsg(f, extra_ns=None, must_pass=False):
ns = {} ns = {}
if extra_ns is not None: if extra_ns is not None:
ns.update(extra_ns) ns.update(extra_ns)
six.exec_(code, ns) exec(code, ns)
func = ns[f.__name__] func = ns[f.__name__]
try: try:
func() func()