Revert "Unrevert "Add username parameter to AsyncBashSession"" (#8897)

This commit is contained in:
Robert Brennan 2025-06-04 11:45:28 -07:00 committed by GitHub
parent d30c6ff720
commit d346506d34
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 9 additions and 41 deletions

View File

@ -390,9 +390,7 @@ class ActionExecutor:
try:
if action.is_static:
path = action.cwd or self._initial_cwd
result = await AsyncBashSession.execute(
action.command, path, self.username
)
result = await AsyncBashSession.execute(action.command, path)
obs = CmdOutputObservation(
content=result.content,
exit_code=result.exit_code,

View File

@ -400,7 +400,7 @@ class Runtime(FileEditRuntimeMixin):
'No repository selected. Initializing a new git repository in the workspace.'
)
action = CmdRunAction(
command=f'git init && git config --global --add safe.directory {self.workspace_root}'
command='git init',
)
self.run_action(action)
else:

View File

@ -1,17 +1,12 @@
import asyncio
import os
import pwd
import sys
from typing import Any, Optional
from openhands.runtime.base import CommandResult
class AsyncBashSession:
@staticmethod
async def execute(
command: str, work_dir: str, username: Optional[str] = None
) -> CommandResult:
async def execute(command: str, work_dir: str) -> CommandResult:
"""Execute a command in the bash session asynchronously."""
work_dir = os.path.abspath(work_dir)
@ -22,31 +17,12 @@ class AsyncBashSession:
if not command:
return CommandResult(content='', exit_code=0)
# Create subprocess arguments
subprocess_kwargs: dict[str, Any] = {
'stdout': asyncio.subprocess.PIPE,
'stderr': asyncio.subprocess.PIPE,
'cwd': work_dir,
}
# Only apply user-specific settings on non-Windows platforms
if username and sys.platform != 'win32':
try:
user_info = pwd.getpwnam(username)
env: dict[str, str] = {
'HOME': user_info.pw_dir,
'USER': username,
'LOGNAME': username,
}
subprocess_kwargs['env'] = env
subprocess_kwargs['user'] = username
except KeyError:
raise ValueError(f'User {username} does not exist.')
# Prepare to run the command
try:
process = await asyncio.subprocess.create_subprocess_shell(
command, **subprocess_kwargs
command,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
cwd=work_dir,
)
try:

View File

@ -234,10 +234,7 @@ async def test_clone_or_init_repo_no_repo_with_user_id(temp_dir):
# Verify that git init was called
assert len(runtime.run_action_calls) == 1
assert isinstance(runtime.run_action_calls[0], CmdRunAction)
assert (
runtime.run_action_calls[0].command
== f'git init && git config --global --add safe.directory {runtime.workspace_root}'
)
assert runtime.run_action_calls[0].command == 'git init'
assert result == ''
@ -258,10 +255,7 @@ async def test_clone_or_init_repo_no_repo_no_user_id_no_workspace_base(temp_dir)
# Verify that git init was called
assert len(runtime.run_action_calls) == 1
assert isinstance(runtime.run_action_calls[0], CmdRunAction)
assert (
runtime.run_action_calls[0].command
== f'git init && git config --global --add safe.directory {runtime.workspace_root}'
)
assert runtime.run_action_calls[0].command == 'git init'
assert result == ''