@@ -44,7 +44,7 @@ def run_docker(
44
44
timeout : int ,
45
45
log_dir : Path ,
46
46
stdout : bool ,
47
- ) -> None :
47
+ ) -> str :
48
48
client = docker .from_env ()
49
49
container = None
50
50
try :
@@ -91,18 +91,21 @@ def run_docker(
91
91
if exit_code == 0 :
92
92
copy_from_container (container , report_file , Path (log_dir / "report.json" ))
93
93
delete_file_from_container (container , str (report_file ))
94
+ return test_output
94
95
95
96
except EvaluationError as e :
96
97
error_msg = traceback .format_exc ()
97
98
logger .info (error_msg )
98
99
print (e )
100
+ return error_msg
99
101
except Exception as e :
100
102
error_msg = (
101
103
f"Error in running pytest for { spec .repo } : { e } \n "
102
104
f"{ traceback .format_exc ()} \n "
103
105
# f"Check ({logger.log_file}) for more information."
104
106
)
105
107
logger .error (error_msg )
108
+ return error_msg
106
109
finally :
107
110
# Remove repo container + image, close logger
108
111
assert container is not None
@@ -253,10 +256,13 @@ def main(
253
256
eval_file = Path (log_dir / "eval.sh" )
254
257
eval_file .write_text (eval_script )
255
258
259
+ error_message = None
256
260
if ExecutionBackend (backend ) == ExecutionBackend .LOCAL :
257
- run_docker (spec , logger , eval_file , timeout , log_dir , stdout )
261
+ error_message = run_docker (spec , logger , eval_file , timeout , log_dir , stdout )
258
262
elif ExecutionBackend (backend ) == ExecutionBackend .MODAL :
259
263
run_modal (spec , logger , eval_file , timeout , log_dir , stdout )
264
+ if error_message :
265
+ return error_message
260
266
return str (log_dir )
261
267
262
268
0 commit comments