9
9
10
10
from opendevin .runtime .utils .runtime_build import (
11
11
_generate_dockerfile ,
12
+ _get_package_version ,
12
13
_put_source_code_to_dir ,
13
14
build_runtime_image ,
14
15
get_new_image_name ,
15
16
)
16
17
18
+ OD_VERSION = f'od_v{ _get_package_version ()} '
17
19
RUNTIME_IMAGE_PREFIX = 'od_runtime'
18
20
19
21
@@ -51,16 +53,15 @@ def test_generate_dockerfile_scratch():
51
53
skip_init = False ,
52
54
)
53
55
assert base_image in dockerfile_content
54
- assert 'RUN apt update && apt install -y wget sudo' in dockerfile_content
56
+ assert 'apt-get update' in dockerfile_content
57
+ assert 'apt-get install -y wget sudo apt-utils' in dockerfile_content
55
58
assert (
56
59
'RUN /opendevin/miniforge3/bin/mamba install conda-forge::poetry -y'
57
60
in dockerfile_content
58
61
)
59
62
60
63
# Check the update command
61
- assert (
62
- f'RUN mv /opendevin/{ source_code_dirname } /opendevin/code' in dockerfile_content
63
- )
64
+ assert f'mv /opendevin/{ source_code_dirname } /opendevin/code' in dockerfile_content
64
65
assert (
65
66
'/opendevin/miniforge3/bin/mamba run -n base poetry install'
66
67
in dockerfile_content
@@ -96,29 +97,41 @@ def test_generate_dockerfile_skip_init():
96
97
def test_get_new_image_name_eventstream ():
97
98
base_image = 'debian:11'
98
99
new_image_name = get_new_image_name (base_image )
99
- assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 '
100
+ assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 '
100
101
101
102
base_image = 'ubuntu:22.04'
102
103
new_image_name = get_new_image_name (base_image )
103
- assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } :ubuntu_tag_22.04'
104
+ assert (
105
+ new_image_name == f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_ubuntu_tag_22.04'
106
+ )
104
107
105
108
base_image = 'ubuntu'
106
109
new_image_name = get_new_image_name (base_image )
107
- assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } :ubuntu_tag_latest'
110
+ assert (
111
+ new_image_name == f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_ubuntu_tag_latest'
112
+ )
108
113
109
114
110
115
def test_get_new_image_name_eventstream_dev_mode ():
111
- base_image = f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 '
116
+ base_image = f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 '
112
117
new_image_name = get_new_image_name (base_image , dev_mode = True )
113
- assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } _dev:debian_tag_11'
118
+ assert (
119
+ new_image_name == f'{ RUNTIME_IMAGE_PREFIX } _dev:{ OD_VERSION } _image_debian_tag_11'
120
+ )
114
121
115
- base_image = f'{ RUNTIME_IMAGE_PREFIX } :ubuntu_tag_22 .04'
122
+ base_image = f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_ubuntu_tag_22 .04'
116
123
new_image_name = get_new_image_name (base_image , dev_mode = True )
117
- assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } _dev:ubuntu_tag_22.04'
124
+ assert (
125
+ new_image_name
126
+ == f'{ RUNTIME_IMAGE_PREFIX } _dev:{ OD_VERSION } _image_ubuntu_tag_22.04'
127
+ )
118
128
119
- base_image = f'{ RUNTIME_IMAGE_PREFIX } :ubuntu_tag_latest '
129
+ base_image = f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_ubuntu_tag_latest '
120
130
new_image_name = get_new_image_name (base_image , dev_mode = True )
121
- assert new_image_name == f'{ RUNTIME_IMAGE_PREFIX } _dev:ubuntu_tag_latest'
131
+ assert (
132
+ new_image_name
133
+ == f'{ RUNTIME_IMAGE_PREFIX } _dev:{ OD_VERSION } _image_ubuntu_tag_latest'
134
+ )
122
135
123
136
124
137
def test_get_new_image_name_eventstream_dev_invalid_base_image ():
@@ -142,11 +155,11 @@ def test_build_runtime_image_from_scratch(mock_docker_client, mock_build_sandbox
142
155
mock_docker_client .images .list .return_value = []
143
156
144
157
image_name = build_runtime_image (base_image , mock_docker_client )
145
- assert image_name == f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 '
158
+ assert image_name == f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 '
146
159
147
160
mock_build_sandbox_image .assert_called_once_with (
148
161
base_image ,
149
- f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 ' ,
162
+ f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 ' ,
150
163
mock_docker_client ,
151
164
skip_init = False ,
152
165
)
@@ -159,11 +172,11 @@ def test_build_runtime_image_exist_no_update_source(
159
172
):
160
173
base_image = 'debian:11'
161
174
mock_docker_client .images .list .return_value = [
162
- MagicMock (tags = [f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 ' ])
175
+ MagicMock (tags = [f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 ' ])
163
176
]
164
177
165
178
image_name = build_runtime_image (base_image , mock_docker_client )
166
- assert image_name == f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 '
179
+ assert image_name == f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 '
167
180
168
181
mock_build_sandbox_image .assert_not_called ()
169
182
@@ -175,17 +188,17 @@ def test_build_runtime_image_exist_with_update_source(
175
188
):
176
189
base_image = 'debian:11'
177
190
mock_docker_client .images .list .return_value = [
178
- MagicMock (tags = [f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 ' ])
191
+ MagicMock (tags = [f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 ' ])
179
192
]
180
193
181
194
image_name = build_runtime_image (
182
195
base_image , mock_docker_client , update_source_code = True
183
196
)
184
- assert image_name == f'{ RUNTIME_IMAGE_PREFIX } _dev:debian_tag_11 '
197
+ assert image_name == f'{ RUNTIME_IMAGE_PREFIX } _dev:{ OD_VERSION } _image_debian_tag_11 '
185
198
186
199
mock_build_sandbox_image .assert_called_once_with (
187
- f'{ RUNTIME_IMAGE_PREFIX } :debian_tag_11 ' ,
188
- f'{ RUNTIME_IMAGE_PREFIX } _dev:debian_tag_11 ' ,
200
+ f'{ RUNTIME_IMAGE_PREFIX } :{ OD_VERSION } _image_debian_tag_11 ' ,
201
+ f'{ RUNTIME_IMAGE_PREFIX } _dev:{ OD_VERSION } _image_debian_tag_11 ' ,
189
202
mock_docker_client ,
190
203
skip_init = True ,
191
204
)
0 commit comments