MultiPLE-Evaluator / src /eval_ruby.py
dongsheng's picture
Upload 48 files
41e79e2 verified
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')