Simplify workspace mounting with SANDBOX_VOLUMES (#8242)

This commit is contained in:
Xingyao Wang
2025-05-07 12:15:52 +08:00
committed by GitHub
parent e8bd59ec22
commit 2f4b70159e
189 changed files with 7417 additions and 4807 deletions

View File

@@ -5,41 +5,62 @@ import pytest
from openhands.runtime.utils import files
SANDBOX_PATH_PREFIX = '/workspace'
WORKSPACE_BASE = 'workspace'
CONTAINER_PATH = '/workspace'
HOST_PATH = 'workspace'
def test_resolve_path():
assert (
files.resolve_path('test.txt', '/workspace')
== Path(WORKSPACE_BASE) / 'test.txt'
files.resolve_path('test.txt', '/workspace', HOST_PATH, CONTAINER_PATH)
== Path(HOST_PATH) / 'test.txt'
)
assert (
files.resolve_path('subdir/test.txt', '/workspace')
== Path(WORKSPACE_BASE) / 'subdir' / 'test.txt'
)
assert (
files.resolve_path(Path(SANDBOX_PATH_PREFIX) / 'test.txt', '/workspace')
== Path(WORKSPACE_BASE) / 'test.txt'
files.resolve_path('subdir/test.txt', '/workspace', HOST_PATH, CONTAINER_PATH)
== Path(HOST_PATH) / 'subdir' / 'test.txt'
)
assert (
files.resolve_path(
Path(SANDBOX_PATH_PREFIX) / 'subdir' / 'test.txt', '/workspace'
Path(SANDBOX_PATH_PREFIX) / 'test.txt',
'/workspace',
HOST_PATH,
CONTAINER_PATH,
)
== Path(WORKSPACE_BASE) / 'subdir' / 'test.txt'
== Path(HOST_PATH) / 'test.txt'
)
assert (
files.resolve_path(
Path(SANDBOX_PATH_PREFIX) / 'subdir' / '..' / 'test.txt', '/workspace'
Path(SANDBOX_PATH_PREFIX) / 'subdir' / 'test.txt',
'/workspace',
HOST_PATH,
CONTAINER_PATH,
)
== Path(WORKSPACE_BASE) / 'test.txt'
== Path(HOST_PATH) / 'subdir' / 'test.txt'
)
with pytest.raises(PermissionError):
files.resolve_path(Path(SANDBOX_PATH_PREFIX) / '..' / 'test.txt', '/workspace')
with pytest.raises(PermissionError):
files.resolve_path(Path('..') / 'test.txt', '/workspace')
with pytest.raises(PermissionError):
files.resolve_path(Path('/') / 'test.txt', '/workspace')
assert (
files.resolve_path('test.txt', '/workspace/test')
== Path(WORKSPACE_BASE) / 'test' / 'test.txt'
files.resolve_path(
Path(SANDBOX_PATH_PREFIX) / 'subdir' / '..' / 'test.txt',
'/workspace',
HOST_PATH,
CONTAINER_PATH,
)
== Path(HOST_PATH) / 'test.txt'
)
with pytest.raises(PermissionError):
files.resolve_path(
Path(SANDBOX_PATH_PREFIX) / '..' / 'test.txt',
'/workspace',
HOST_PATH,
CONTAINER_PATH,
)
with pytest.raises(PermissionError):
files.resolve_path(
Path('..') / 'test.txt', '/workspace', HOST_PATH, CONTAINER_PATH
)
with pytest.raises(PermissionError):
files.resolve_path(
Path('/') / 'test.txt', '/workspace', HOST_PATH, CONTAINER_PATH
)
assert (
files.resolve_path('test.txt', '/workspace/test', HOST_PATH, CONTAINER_PATH)
== Path(HOST_PATH) / 'test' / 'test.txt'
)