mirror of https://github.com/python/cpython
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
|
import unittest
|
||
|
|
||
|
from test.support import import_helper
|
||
|
|
||
|
|
||
|
# Skip this test if the _testcapi module isn't available.
|
||
|
_testcapi = import_helper.import_module('_testcapi')
|
||
|
|
||
|
|
||
|
class PyEval_EvalCodeExTests(unittest.TestCase):
|
||
|
|
||
|
def test_simple(self):
|
||
|
def f():
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(_testcapi.eval_code_ex(f.__code__, dict(a=1)), 1)
|
||
|
|
||
|
# Need to force the compiler to use LOAD_NAME
|
||
|
# def test_custom_locals(self):
|
||
|
# def f():
|
||
|
# return
|
||
|
|
||
|
def test_with_args(self):
|
||
|
def f(a, b, c):
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(_testcapi.eval_code_ex(f.__code__, {}, {}, (1, 2, 3)), 1)
|
||
|
|
||
|
def test_with_kwargs(self):
|
||
|
def f(a, b, c):
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(_testcapi.eval_code_ex(f.__code__, {}, {}, (), dict(a=1, b=2, c=3)), 1)
|
||
|
|
||
|
def test_with_default(self):
|
||
|
def f(a):
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(_testcapi.eval_code_ex(f.__code__, {}, {}, (), {}, (1,)), 1)
|
||
|
|
||
|
def test_with_kwarg_default(self):
|
||
|
def f(*, a):
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(_testcapi.eval_code_ex(f.__code__, {}, {}, (), {}, (), dict(a=1)), 1)
|
||
|
|
||
|
def test_with_closure(self):
|
||
|
a = 1
|
||
|
def f():
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(_testcapi.eval_code_ex(f.__code__, {}, {}, (), {}, (), {}, f.__closure__), 1)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|