fix: more sandbox protections to terminate plus max pages

This commit is contained in:
Alex committed 2026-07-09 19:56:13 +01:00
1 parent 9f19bc64b5
commit e4c0c26927
11 files changed
+661 -55

No files matched your search

+25 -1
View File
@@ -50,12 +50,20 @@ def _code_node(node_id="code_1", **config) -> WorkflowNode:
class _Result:
def __init__(self, ok=True, stdout="", error_name=None, error_value=None):
def __init__(
self,
ok=True,
stdout="",
error_name=None,
error_value=None,
runtime_invalidated=False,
):
self.status = "ok" if ok else "error"
self.stdout = stdout
self.stderr = ""
self.error_name = error_name
self.error_value = error_value
self.runtime_invalidated = runtime_invalidated
@property
def ok(self):
@@ -275,6 +283,22 @@ def test_code_node_failure_raises(patch_sandbox):
list(engine._execute_code_node(node))
def test_code_node_invalidated_runtime_skips_capture_and_preserves_timeout(patch_sandbox):
engine = _engine()
patch_sandbox["result"] = _Result(
ok=False,
error_name="TimeoutError",
error_value="execution exceeded 30s",
runtime_invalidated=True,
)
node = _code_node(code="while True: pass")
with pytest.raises(ValueError, match="failed: TimeoutError: execution exceeded 30s"):
list(engine._execute_code_node(node))
assert patch_sandbox["capture_calls"] == 0
def test_code_node_empty_code_raises(patch_sandbox):
engine = _engine()
node = _code_node(code=" ")