|
@@ -294,40 +294,27 @@ def test_sandbox_jupyter_plugin(temp_dir):
|
|
|
)
|
|
)
|
|
|
box.close()
|
|
box.close()
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def _test_sandbox_jupyter_agentskills_fileop_pwd_impl(box):
|
|
def _test_sandbox_jupyter_agentskills_fileop_pwd_impl(box):
|
|
|
box.init_plugins([AgentSkillsRequirement, JupyterRequirement])
|
|
box.init_plugins([AgentSkillsRequirement, JupyterRequirement])
|
|
|
exit_code, output = box.execute('mkdir test')
|
|
exit_code, output = box.execute('mkdir test')
|
|
|
print(output)
|
|
print(output)
|
|
|
- assert exit_code == 0, (
|
|
|
|
|
- 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ assert exit_code == 0, 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
|
|
|
- exit_code, output = box.execute(
|
|
|
|
|
- 'echo "create_file(\'a.txt\')" | execute_cli'
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ exit_code, output = box.execute('echo "create_file(\'a.txt\')" | execute_cli')
|
|
|
print(output)
|
|
print(output)
|
|
|
- assert exit_code == 0, (
|
|
|
|
|
- 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ assert exit_code == 0, 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
assert output.strip().split('\r\n') == (
|
|
assert output.strip().split('\r\n') == (
|
|
|
- '[File: /workspace/a.txt (1 lines total)]\r\n'
|
|
|
|
|
- '1|\r\n'
|
|
|
|
|
- '[File a.txt created.]'
|
|
|
|
|
|
|
+ '[File: /workspace/a.txt (1 lines total)]\r\n' '1|\r\n' '[File a.txt created.]'
|
|
|
).strip().split('\r\n')
|
|
).strip().split('\r\n')
|
|
|
|
|
|
|
|
exit_code, output = box.execute('cd test')
|
|
exit_code, output = box.execute('cd test')
|
|
|
print(output)
|
|
print(output)
|
|
|
- assert exit_code == 0, (
|
|
|
|
|
- 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ assert exit_code == 0, 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
|
|
|
- exit_code, output = box.execute(
|
|
|
|
|
- 'echo "create_file(\'a.txt\')" | execute_cli'
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ exit_code, output = box.execute('echo "create_file(\'a.txt\')" | execute_cli')
|
|
|
print(output)
|
|
print(output)
|
|
|
- assert exit_code == 0, (
|
|
|
|
|
- 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ assert exit_code == 0, 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
assert output.strip().split('\r\n') == (
|
|
assert output.strip().split('\r\n') == (
|
|
|
'[File: /workspace/test/a.txt (1 lines total)]\r\n'
|
|
'[File: /workspace/test/a.txt (1 lines total)]\r\n'
|
|
|
'1|\r\n'
|
|
'1|\r\n'
|
|
@@ -335,9 +322,7 @@ def _test_sandbox_jupyter_agentskills_fileop_pwd_impl(box):
|
|
|
).strip().split('\r\n')
|
|
).strip().split('\r\n')
|
|
|
|
|
|
|
|
exit_code, output = box.execute('rm -rf /workspace/*')
|
|
exit_code, output = box.execute('rm -rf /workspace/*')
|
|
|
- assert exit_code == 0, (
|
|
|
|
|
- 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ assert exit_code == 0, 'The exit code should be 0 for ' + box.__class__.__name__
|
|
|
box.close()
|
|
box.close()
|
|
|
|
|
|
|
|
|
|
|
|
@@ -352,18 +337,17 @@ def test_sandbox_jupyter_agentskills_fileop_pwd(temp_dir):
|
|
|
_test_sandbox_jupyter_agentskills_fileop_pwd_impl(box)
|
|
_test_sandbox_jupyter_agentskills_fileop_pwd_impl(box)
|
|
|
|
|
|
|
|
|
|
|
|
|
-@pytest.mark.skipif(os.getenv('TEST_IN_CI') != 'true',
|
|
|
|
|
|
|
+@pytest.mark.skipif(
|
|
|
|
|
+ os.getenv('TEST_IN_CI') != 'true',
|
|
|
reason='The unittest need to download image, so only run on CI',
|
|
reason='The unittest need to download image, so only run on CI',
|
|
|
)
|
|
)
|
|
|
def test_agnostic_sandbox_jupyter_agentskills_fileop_pwd(temp_dir):
|
|
def test_agnostic_sandbox_jupyter_agentskills_fileop_pwd(temp_dir):
|
|
|
for base_sandbox_image in ['ubuntu:22.04', 'debian:11']:
|
|
for base_sandbox_image in ['ubuntu:22.04', 'debian:11']:
|
|
|
# get a temporary directory
|
|
# get a temporary directory
|
|
|
with patch.object(config, 'workspace_base', new=temp_dir), patch.object(
|
|
with patch.object(config, 'workspace_base', new=temp_dir), patch.object(
|
|
|
- config, 'workspace_mount_path', new=temp_dir
|
|
|
|
|
|
|
+ config, 'workspace_mount_path', new=temp_dir
|
|
|
), patch.object(config, 'run_as_devin', new='true'), patch.object(
|
|
), patch.object(config, 'run_as_devin', new='true'), patch.object(
|
|
|
config, 'sandbox_type', new='ssh'
|
|
config, 'sandbox_type', new='ssh'
|
|
|
- ), patch.object(
|
|
|
|
|
- config, 'sandbox_container_image', new=base_sandbox_image
|
|
|
|
|
- ):
|
|
|
|
|
|
|
+ ), patch.object(config, 'sandbox_container_image', new=base_sandbox_image):
|
|
|
for box in [DockerSSHBox()]:
|
|
for box in [DockerSSHBox()]:
|
|
|
- _test_sandbox_jupyter_agentskills_fileop_pwd_impl(box)
|
|
|
|
|
|
|
+ _test_sandbox_jupyter_agentskills_fileop_pwd_impl(box)
|