TestCodeFlowModule / CodeTestingAtomicFlow.py
Tachi67's picture
Upload 7 files
e8c208d
raw
history blame
1.64 kB
import os
import time
from typing import Dict, Any
from flow_modules.Tachi67.InterpreterFlowModule import InterpreterAtomicFlow
class CodeTestingAtomicFlow(InterpreterAtomicFlow):
def _wait_for_file_update(self, file_location, last_check_time, check_interval=1):
while True:
time.sleep(check_interval)
current_time = os.path.getmtime(file_location)
if current_time != last_check_time:
break
def _prepare_code_and_lang(self, input_data: Dict[str, Any]):
file_location = input_data["temp_code_file_location"]
input_data["language"] = "python"
with open(file_location, "r") as file:
code_str = file.read()
input_data["code"] = code_str
def _check_input(self, input_data: Dict[str, Any]):
assert "temp_code_file_location" in input_data, "temp_code_file_location not passed to CodeTestingAtomicFlow"
assert "temp_code_file_written_timestamp" in input_data, "temp_code_file_written_timestamp not passed to CodeTestingAtomicFlow"
def _delete_file(self, file_location):
if os.path.exists(file_location):
os.remove(file_location)
def run(
self,
input_data: Dict[str, Any]):
self._check_input(input_data)
file_loc = input_data["temp_code_file_location"]
last_timestamp = input_data["temp_code_file_written_timestamp"]
self._wait_for_file_update(file_loc, last_timestamp)
self._prepare_code_and_lang(input_data)
response = self._call()
self._delete_file(file_loc)
return {"test_results": response}