Download tests/test_execution.py from ML-Intern-lab/nanochat: direct link, hf CLI and curl.
- Browser
- Download file 2.51 kB
-
https://huggingface.co/ML-Intern-lab/nanochat/resolve/main/tests/test_execution.py
- Command line
-
hf download hf://ML-Intern-lab/nanochat/tests/test_execution.py
-
curl -L -o test_execution.py https://huggingface.co/ML-Intern-lab/nanochat/resolve/main/tests/test_execution.py
2.51 kB
| """ | |
| Test the sandboxed Python execution used by tool use / HumanEval. | |
| Each test adversarially checks one property of the sandbox. | |
| python -m pytest tests/test_execution.py -v | |
| """ | |
| import os | |
| import time | |
| import pytest | |
| from nanochat.execution import execute_code | |
| def test_happy_path(): | |
| result = execute_code("print('hello world')") | |
| assert result.success | |
| assert result.stdout == "hello world\n" | |
| def test_exception_is_captured(): | |
| result = execute_code("1/0") | |
| assert not result.success | |
| assert "ZeroDivisionError" in result.error | |
| def test_timeout_kills_infinite_loop(): | |
| start = time.time() | |
| result = execute_code("while True: pass", timeout=2.0) | |
| elapsed = time.time() - start | |
| assert result.timeout and not result.success | |
| assert elapsed < 5, f"process was not killed promptly ({elapsed:.1f}s)" | |
| def test_memory_limit(): | |
| # 1GB allocation against the 256MB default limit | |
| result = execute_code("x = bytearray(1024 * 1024 * 1024)") | |
| assert not result.success | |
| assert result.memory_exceeded | |
| def test_destructive_functions_disabled(evil): | |
| result = execute_code(evil) | |
| assert not result.success | |
| def test_stdin_disabled(): | |
| result = execute_code("input()") | |
| assert not result.success | |
| def test_writes_go_to_tempdir(): | |
| result = execute_code("open('landmine.txt', 'w').write('x'); print(open('landmine.txt').read())") | |
| assert result.success and result.stdout == "x\n" | |
| assert not os.path.exists("landmine.txt"), "file leaked outside the sandbox tempdir" | |
| def test_environment_is_scrubbed(): | |
| os.environ["FAKE_SECRET_KEY"] = "hunter2" | |
| try: | |
| result = execute_code("import os; print('FAKE_SECRET_KEY' in os.environ)") | |
| assert result.success and result.stdout.strip() == "False" | |
| finally: | |
| del os.environ["FAKE_SECRET_KEY"] | |
| def test_tricky_string_content(): | |
| # quotes, backslashes and braces must survive being embedded into the runner | |
| tricky = '''s = 'it\\'s "quoted" \\\\ {braces} \\n'; print(len(s))''' | |
| result = execute_code(tricky) | |
| assert result.success | |
| def test_fresh_globals(): | |
| # user code must not see the guard prelude's imports | |
| result = execute_code("print('GUARD' in dir())") | |
| assert result.success and result.stdout.strip() == "False" | |