28
28
print (f'workspace_mount_path_in_sandbox: { workspace_mount_path_in_sandbox } ' )
29
29
30
30
31
+ def validate_final_state (final_state : State | None ):
32
+ assert final_state is not None
33
+ assert final_state .agent_state == AgentState .STOPPED
34
+ assert final_state .last_error is None
35
+ if final_state .history .has_delegation ():
36
+ assert final_state .iteration > final_state .local_iteration
37
+ else :
38
+ assert final_state .local_iteration == final_state .iteration
39
+ assert final_state .iteration > 0
40
+
41
+
31
42
@pytest .mark .skipif (
32
43
os .getenv ('DEFAULT_AGENT' ) == 'BrowsingAgent' ,
33
44
reason = 'BrowsingAgent is a specialized agent' ,
@@ -112,8 +123,7 @@ def test_edits():
112
123
final_state : State | None = asyncio .run (
113
124
run_agent_controller (agent , task , exit_on_message = True )
114
125
)
115
- assert final_state .agent_state == AgentState .STOPPED
116
- assert final_state .last_error is None
126
+ validate_final_state (final_state )
117
127
118
128
# Verify bad.txt has been fixed
119
129
text = """This is a stupid typo.
@@ -146,8 +156,7 @@ def test_ipython():
146
156
final_state : State | None = asyncio .run (
147
157
run_agent_controller (agent , task , exit_on_message = True )
148
158
)
149
- assert final_state .agent_state == AgentState .STOPPED
150
- assert final_state .last_error is None
159
+ validate_final_state (final_state )
151
160
152
161
# Verify the file exists
153
162
file_path = os .path .join (workspace_base , 'test.txt' )
@@ -179,8 +188,7 @@ def test_simple_task_rejection():
179
188
# the workspace is not a git repo
180
189
task = 'Write a git commit message for the current staging area. Do not ask me for confirmation at any point.'
181
190
final_state : State | None = asyncio .run (run_agent_controller (agent , task ))
182
- assert final_state .agent_state == AgentState .STOPPED
183
- assert final_state .last_error is None
191
+ validate_final_state (final_state )
184
192
assert isinstance (final_state .history .get_last_action (), AgentRejectAction )
185
193
186
194
@@ -204,8 +212,7 @@ def test_ipython_module():
204
212
final_state : State | None = asyncio .run (
205
213
run_agent_controller (agent , task , exit_on_message = True )
206
214
)
207
- assert final_state .agent_state == AgentState .STOPPED
208
- assert final_state .last_error is None
215
+ validate_final_state (final_state )
209
216
210
217
# Verify the file exists
211
218
file_path = os .path .join (workspace_base , 'test.txt' )
@@ -244,8 +251,7 @@ def test_browse_internet(http_server):
244
251
final_state : State | None = asyncio .run (
245
252
run_agent_controller (agent , task , exit_on_message = True )
246
253
)
247
- assert final_state .agent_state == AgentState .STOPPED
248
- assert final_state .last_error is None
254
+ validate_final_state (final_state )
249
255
250
256
# last action
251
257
last_action = final_state .history .get_last_action ()
0 commit comments