fix(sandbox): ssh_box parsing (#1831)

* fix ssh_box error parsing

* Add type check

---------

Co-authored-by: Graham Neubig <neubig@gmail.com>
Co-authored-by: OpenDevinBot <bot@opendevin.com>
This commit is contained in:
Xingyao Wang 2024-05-17 06:03:34 +08:00 committed by GitHub
parent b3a45ed7fe
commit 0cb707bc9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -453,7 +453,7 @@ class DockerSSHBox(Sandbox):
logger.debug(
f'WAITING FOR END OF command output ({bool(output)}): {output}'
)
if output == '':
if isinstance(output, str) and output.strip() == '':
break
command_output += output
command_output = command_output.removesuffix('\r\n')
@ -461,17 +461,19 @@ class DockerSSHBox(Sandbox):
# get the exit code
self.ssh.sendline('echo $?')
self.ssh.prompt()
exit_code_str = self.ssh.before
exit_code_str = self.ssh.before.strip()
_start_time = time.time()
while not exit_code_str:
self.ssh.prompt()
exit_code_str = self.ssh.before
self.ssh.prompt(timeout=1)
exit_code_str = self.ssh.before.strip()
logger.debug(f'WAITING FOR exit code: {exit_code_str}')
if time.time() - _start_time > timeout:
return self._send_interrupt(
cmd, command_output, ignore_last_output=True
)
exit_code = int(exit_code_str.strip())
exit_code = int(
exit_code_str.replace('echo $?', '').replace('\r\n', '').strip()
)
return exit_code, command_output
def copy_to(self, host_src: str, sandbox_dest: str, recursive: bool = False):