mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 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()
 |