|
""" |
|
Evaluates a generated Racket program (.rkt). |
|
""" |
|
import os |
|
from pathlib import Path |
|
from src.safe_subprocess import run |
|
from src.libeval import run_without_exn |
|
|
|
|
|
def eval_script(path: Path): |
|
result = run(["racket", str(path)]) |
|
|
|
if ( |
|
"standard-module-name-resolver: collection not found\n for module path: rackunit" |
|
in result.stderr |
|
): |
|
print(f"Failed to run evaluation for {path}: rackunit is not installed") |
|
return None |
|
|
|
|
|
if len(result.stderr) > 0 or result.exit_code != 0: |
|
if "read-syntax" in result.stderr: |
|
status = "SyntaxError" |
|
else: |
|
status = "Exception" |
|
else: |
|
status = "OK" |
|
|
|
return { |
|
"status": status, |
|
"exit_code": result.exit_code, |
|
"stdout": result.stdout, |
|
"stderr": result.stderr, |
|
} |
|
|
|
|
|
def main(): |
|
directory = Path( |
|
Path(__file__).parent, "..", "datasets", "racket-keep-code_davinci_001_temp_0.2" |
|
).resolve() |
|
|
|
for filename in os.listdir(directory): |
|
r = eval_script(Path.joinpath(directory, filename)) |
|
filename = filename.split(".")[0] |
|
print(f"Racket,{filename},{r['status']}") |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|