Spaces:
Running
Running
import argparse | |
from sys import exit | |
import subprocess | |
from pathlib import Path | |
from src.generic_eval import main as gmain | |
def eval_script(path: Path): | |
try: | |
# Assumes exit-code 0 is all okay | |
# Need check=True for Ruby to pass errors to CalledProcessError | |
output = subprocess.run( | |
["ruby", path], check=True, capture_output=True, timeout=5 | |
) | |
if output.returncode == 0: | |
status = "OK" | |
out = output.stderr | |
error = output.stdout | |
returncode = 0 | |
else: | |
raise Exception("there's an issue with check = True for Ruby, INVESTIGATE!") | |
except subprocess.TimeoutExpired as exc: | |
status = "Timeout" | |
out = exc.stdout | |
error = exc.stderr | |
returncode = -1 | |
except subprocess.CalledProcessError as exc: | |
returncode = exc.returncode | |
out = exc.stdout | |
error = exc.stderr | |
#failure with code 1 but no error message is an Exception from Failed tests | |
if len(error) < 1: | |
status = "Exception" | |
else: #everything that prints out an error message is a SyntaxError | |
status = "SyntaxError" | |
return { | |
"status": status, | |
"exit_code": returncode, | |
"stdout": out, | |
"stderr": error, | |
} | |
if __name__ == "__main__": | |
gmain(eval_script, 'Ruby', '.rb') | |