chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from agents.sandbox.errors import (
|
||||
ErrorCode,
|
||||
ExecTimeoutError,
|
||||
GitCloneError,
|
||||
GitCopyError,
|
||||
SandboxError,
|
||||
SnapshotPersistError,
|
||||
SnapshotRestoreError,
|
||||
WorkspaceArchiveReadError,
|
||||
WorkspaceReadNotFoundError,
|
||||
WorkspaceStopError,
|
||||
WorkspaceWriteTypeError,
|
||||
)
|
||||
|
||||
|
||||
def test_sandbox_error_retryable_can_be_set_explicitly() -> None:
|
||||
error = SandboxError(
|
||||
message="backend is unavailable",
|
||||
error_code=ErrorCode.EXEC_TRANSPORT_ERROR,
|
||||
op="exec",
|
||||
context={},
|
||||
retryable=True,
|
||||
)
|
||||
|
||||
assert error.retryable is True
|
||||
|
||||
|
||||
def test_wrapped_sandbox_error_inherits_retryable_from_cause() -> None:
|
||||
cause = WorkspaceArchiveReadError(
|
||||
path=Path("/workspace"),
|
||||
retryable=False,
|
||||
)
|
||||
|
||||
error = WorkspaceStopError(path=Path("/workspace"), cause=cause)
|
||||
|
||||
assert error.retryable is False
|
||||
|
||||
|
||||
def test_deterministic_sandbox_errors_are_non_retryable() -> None:
|
||||
assert WorkspaceReadNotFoundError(path=Path("/workspace/missing.txt")).retryable is False
|
||||
assert (
|
||||
WorkspaceWriteTypeError(path=Path("/workspace/out.txt"), actual_type="str").retryable
|
||||
is False
|
||||
)
|
||||
assert ExecTimeoutError(command=("python", "script.py"), timeout_s=1.0).retryable is False
|
||||
|
||||
|
||||
def test_broad_archive_errors_default_to_unknown_retryability() -> None:
|
||||
error = WorkspaceArchiveReadError(path=Path("/workspace"))
|
||||
|
||||
assert error.retryable is None
|
||||
|
||||
|
||||
def test_broad_materialization_and_snapshot_errors_default_to_unknown_retryability() -> None:
|
||||
assert GitCloneError(url="https://example.test/repo.git", ref="main").retryable is None
|
||||
assert GitCopyError(src_root="/tmp/repo", dest=Path("/workspace")).retryable is None
|
||||
assert SnapshotPersistError(snapshot_id="snap", path=Path("/tmp/snap")).retryable is None
|
||||
assert SnapshotRestoreError(snapshot_id="snap", path=Path("/tmp/snap")).retryable is None
|
||||
Reference in New Issue
Block a user