mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +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()
 | 
