Files
2026-07-13 12:39:17 +08:00

64 lines
2.4 KiB
Python

from pathlib import Path
from agents.sandbox.entries import BaseEntry, Dir, DockerVolumeMountStrategy, S3Mount
from agents.sandbox.manifest import Manifest
from agents.sandbox.remote_mount_policy import build_remote_mount_policy_instructions
def _s3_mount(*, read_only: bool) -> S3Mount:
return S3Mount(
bucket="example-bucket",
mount_strategy=DockerVolumeMountStrategy(driver="rclone"),
read_only=read_only,
)
def _policy_for(entries: dict[str | Path, BaseEntry]) -> str:
policy = build_remote_mount_policy_instructions(Manifest(entries=entries))
assert policy is not None
return policy
def test_remote_mount_policy_does_not_suggest_direct_edits_for_read_only_mounts() -> None:
policy = _policy_for({"data": _s3_mount(read_only=True)})
assert "/workspace/data (mounted in read-only mode)" in policy
assert "`apply_patch` directly" not in policy
assert "copy it back" not in policy
assert "Do not edit paths marked read-only in place" in policy
assert "including with `apply_patch`" in policy
assert "do not write edited files back" in policy
def test_remote_mount_policy_keeps_direct_and_copy_back_guidance_for_read_write_mounts() -> None:
policy = _policy_for({"data": _s3_mount(read_only=False)})
assert "/workspace/data (mounted in read+write mode)" in policy
assert "Use `apply_patch` directly for text edits on read+write mounts." in policy
assert "For shell-based edits on read+write mounts" in policy
assert "copy it back" in policy
assert "Do not edit paths marked read-only" not in policy
def test_remote_mount_policy_handles_mixed_read_only_and_read_write_mounts() -> None:
policy = _policy_for(
{
"input": _s3_mount(read_only=True),
"output": _s3_mount(read_only=False),
}
)
assert "/workspace/input (mounted in read-only mode)" in policy
assert "/workspace/output (mounted in read+write mode)" in policy
assert "Use `apply_patch` directly for text edits on read+write mounts." in policy
assert "For shell-based edits on read+write mounts" in policy
assert "Do not edit paths marked read-only in place" in policy
assert "including with `apply_patch`" in policy
assert "do not write edited files back" in policy
def test_remote_mount_policy_returns_none_without_remote_mounts() -> None:
policy = build_remote_mount_policy_instructions(Manifest(entries={"local": Dir()}))
assert policy is None