51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
|  | import os | ||
|  | 
 | ||
|  | import pytest | ||
|  | 
 | ||
|  | import env  # noqa: F401 | ||
|  | from pybind11_tests import eval_ as m | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_evals(capture): | ||
|  |     with capture: | ||
|  |         assert m.test_eval_statements() | ||
|  |     assert capture == "Hello World!" | ||
|  | 
 | ||
|  |     assert m.test_eval() | ||
|  |     assert m.test_eval_single_statement() | ||
|  | 
 | ||
|  |     assert m.test_eval_failure() | ||
|  | 
 | ||
|  | 
 | ||
|  | @pytest.mark.xfail("env.PYPY", raises=RuntimeError) | ||
|  | def test_eval_file(): | ||
|  |     filename = os.path.join(os.path.dirname(__file__), "test_eval_call.py") | ||
|  |     assert m.test_eval_file(filename) | ||
|  | 
 | ||
|  |     assert m.test_eval_file_failure() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_eval_empty_globals(): | ||
|  |     assert "__builtins__" in m.eval_empty_globals(None) | ||
|  | 
 | ||
|  |     g = {} | ||
|  |     assert "__builtins__" in m.eval_empty_globals(g) | ||
|  |     assert "__builtins__" in g | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_eval_closure(): | ||
|  |     global_, local = m.test_eval_closure() | ||
|  | 
 | ||
|  |     assert global_["closure_value"] == 42 | ||
|  |     assert local["closure_value"] == 0 | ||
|  | 
 | ||
|  |     assert "local_value" not in global_ | ||
|  |     assert local["local_value"] == 0 | ||
|  | 
 | ||
|  |     assert "func_global" not in global_ | ||
|  |     assert local["func_global"]() == 42 | ||
|  | 
 | ||
|  |     assert "func_local" not in global_ | ||
|  |     with pytest.raises(NameError): | ||
|  |         local["func_local"]() |