fix: persist workspace Python environments
This commit is contained in:
@@ -36,6 +36,31 @@ async def test_real_docker_workspaces_are_isolated(settings) -> None:
|
||||
escaped = await provider.exec(users[0], "test ! -e /var/run/docker.sock", ".", 10)
|
||||
assert escaped.ok
|
||||
|
||||
environment = await provider.exec(
|
||||
users[0],
|
||||
'test "$HOME" = /workspace/.agent/home'
|
||||
' && test "$PYTHONUSERBASE" = /workspace/.agent/home/.local'
|
||||
' && case "$PATH" in /workspace/.venv/bin:*) exit 0;; *) exit 1;; esac',
|
||||
".",
|
||||
10,
|
||||
)
|
||||
assert environment.ok, environment.output
|
||||
virtualenv = await provider.exec(
|
||||
users[0],
|
||||
"python3 -m venv .venv && .venv/bin/python -m pip --version",
|
||||
".",
|
||||
30,
|
||||
)
|
||||
assert virtualenv.ok, virtualenv.output
|
||||
assert "/workspace/.venv/" in virtualenv.output
|
||||
hidden = await provider.list_files(users[0], ".", 4, 100)
|
||||
assert ".agent" not in hidden.output
|
||||
assert ".venv" not in hidden.output
|
||||
|
||||
piped_failure = await provider.exec(users[0], "false | tail -n 1", ".", 10)
|
||||
assert not piped_failure.ok
|
||||
assert piped_failure.exit_code == 1
|
||||
|
||||
git_init = "git init -q && git config user.email test@example.invalid && git config user.name Integration"
|
||||
assert (await provider.exec(users[0], git_init, ".", 10)).ok
|
||||
assert (await provider.write_file(users[0], "tracked.txt", "before\n")).ok
|
||||
@@ -64,6 +89,17 @@ async def test_real_docker_workspaces_are_isolated(settings) -> None:
|
||||
assert polled.exit_code == 0
|
||||
assert "background-done" in polled.output
|
||||
|
||||
failed = await provider.start_process(users[0], "false | tail -n 1", ".")
|
||||
failed_process_id = failed.metadata["process_id"]
|
||||
failed_poll = await provider.poll_process(users[0], failed_process_id)
|
||||
for _ in range(20):
|
||||
if not failed_poll.metadata.get("running"):
|
||||
break
|
||||
await asyncio.sleep(0.1)
|
||||
failed_poll = await provider.poll_process(users[0], failed_process_id)
|
||||
assert not failed_poll.ok
|
||||
assert failed_poll.exit_code == 1
|
||||
|
||||
container = client.containers.get(workspace_ref(users[0]).container_name)
|
||||
container.reload()
|
||||
second_container = client.containers.get(workspace_ref(users[1]).container_name)
|
||||
|
||||
Reference in New Issue
Block a user