forked from OpenHands/OpenHands
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_docker_images.py
More file actions
96 lines (74 loc) · 3.46 KB
/
Copy pathtest_docker_images.py
File metadata and controls
96 lines (74 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
"""Image-related tests for the DockerRuntime, which connects to the ActionExecutor running in the sandbox."""
import os
import pytest
from conftest import _close_test_runtime, _load_runtime
from openhands.core.logger import openhands_logger as logger
from openhands.events.action import CmdRunAction
# ============================================================================================================================
# Image-specific tests
# ============================================================================================================================
# Skip all tests in this file if running with CLIRuntime or LocalRuntime,
# as these tests are specific to Docker images.
pytestmark = pytest.mark.skipif(
os.environ.get('TEST_RUNTIME') in ['cli', 'local'],
reason='Image tests are specific to DockerRuntime and not applicable to CLIRuntime or LocalRuntime.',
)
def test_bash_python_version(temp_dir, runtime_cls, base_container_image):
"""Make sure Python is available in bash."""
if base_container_image not in [
'python:3.12-bookworm',
]:
pytest.skip('This test is only for python-related images')
runtime, config = _load_runtime(
temp_dir, runtime_cls, base_container_image=base_container_image
)
action = CmdRunAction(command='which python')
logger.info(action, extra={'msg_type': 'ACTION'})
obs = runtime.run_action(action)
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
assert obs.exit_code == 0
action = CmdRunAction(command='python --version')
logger.info(action, extra={'msg_type': 'ACTION'})
obs = runtime.run_action(action)
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
assert obs.exit_code == 0
assert 'Python 3.12' in obs.content # Check for specific version
action = CmdRunAction(command='pip --version')
logger.info(action, extra={'msg_type': 'ACTION'})
obs = runtime.run_action(action)
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
assert obs.exit_code == 0
assert 'pip' in obs.content # Check that pip is available
_close_test_runtime(runtime)
def test_nodejs_22_version(temp_dir, runtime_cls, base_container_image):
"""Make sure Node.js is available in bash."""
if base_container_image not in [
'node:22-bookworm',
]:
pytest.skip('This test is only for nodejs-related images')
runtime, config = _load_runtime(
temp_dir, runtime_cls, base_container_image=base_container_image
)
action = CmdRunAction(command='node --version')
logger.info(action, extra={'msg_type': 'ACTION'})
obs = runtime.run_action(action)
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
assert obs.exit_code == 0
assert 'v22' in obs.content # Check for specific version
_close_test_runtime(runtime)
def test_go_version(temp_dir, runtime_cls, base_container_image):
"""Make sure Go is available in bash."""
if base_container_image not in [
'golang:1.23-bookworm',
]:
pytest.skip('This test is only for go-related images')
runtime, config = _load_runtime(
temp_dir, runtime_cls, base_container_image=base_container_image
)
action = CmdRunAction(command='go version')
logger.info(action, extra={'msg_type': 'ACTION'})
obs = runtime.run_action(action)
logger.info(obs, extra={'msg_type': 'OBSERVATION'})
assert obs.exit_code == 0
assert 'go1.23' in obs.content # Check for specific version
_close_test_runtime(runtime)