from tests.dangerously_run_function_in_subprocess import dangerously_run_function_in_subprocess def test_simple_function(): def test_func(): print("Hello, Test!") stdout, stderr, returncode = dangerously_run_function_in_subprocess(test_func) assert returncode == 0 assert stdout.strip() == "Hello, Test!" assert stderr == "" def test_function_with_error(): def test_func(): raise ValueError("This is an error") _stdout, stderr, returncode = dangerously_run_function_in_subprocess(test_func) assert returncode != 0 # Should fail assert "ValueError: This is an error" in stderr def test_function_with_imports(): def test_func(): import math print(math.sqrt(4)) stdout, stderr, returncode = dangerously_run_function_in_subprocess(test_func) assert returncode == 0 assert stdout.strip() == "2.0" assert stderr == "" def test_function_with_sys_exit(): def test_func(): import sys sys.exit(42) _stdout, _stderr, returncode = dangerously_run_function_in_subprocess(test_func) assert returncode == 42 # Should return the custom exit code def test_function_with_closure(): foo = "bar" def test_func(): print(foo) _stdout, _stderr, returncode = dangerously_run_function_in_subprocess(test_func) assert returncode == 1 # Should fail because of closure