MultiPLE-Evaluator / src /eval_cpp.py
dongsheng's picture
Upload 48 files
41e79e2 verified
from pathlib import Path
from src.safe_subprocess import run
from src.generic_eval import main
LANG_NAME = "C++"
LANG_EXT = ".cpp"
def eval_script(path: Path):
basename = ".".join(str(path).split(".")[:-1])
build_result = run(["g++", path, "-o", basename, "-std=c++17"])
if build_result.exit_code != 0:
return {
"status": "SyntaxError",
"exit_code": build_result.exit_code,
"stdout": build_result.stdout,
"stderr": build_result.stderr,
}
run_result = run([basename])
if "In file included from /shared/centos7/gcc/9.2.0-skylake/" in run_result.stderr:
raise Exception("Skylake bug encountered")
if "/4.8.2" in run_result.stderr:
raise Exception("Ancient compiler encountered")
if run_result.timeout:
status = "Timeout"
elif run_result.exit_code != 0:
status = "Exception"
else:
status = "OK"
return {
"status": status,
"exit_code": run_result.exit_code,
"stdout": run_result.stdout,
"stderr": run_result.stderr,
}
if __name__ == "__main__":
main(eval_script, LANG_NAME, LANG_EXT)