import os import subprocess from pathlib import Path def eval_script(path: Path): try: # Assumes exit-code 0 is all okay output = subprocess.run(["node", str(path)], capture_output=True, timeout=5) if output.returncode == 0: status = "OK" else: outmessage = str(output) if 'ERR_ASSERTION' in outmessage: status = "AssertionError" elif 'SyntaxError' in outmessage: status = "SyntaxError" elif 'ReferenceError' in outmessage: status = "ReferenceError" else: status = "Exception" returncode = output.returncode except subprocess.TimeoutExpired as exc: status = "Timeout" output = exc returncode = -1 except subprocess.CalledProcessError as exc: status = "Exception" returncode = exc.returncode output = exc return { "status": status, "exit_code": returncode, "stdout": "" if output.stdout is None else output.stdout.decode("utf-8"), "stderr": "" if output.stderr is None else output.stderr.decode("utf-8"), } def main(): directory = Path(Path(__file__).parent, "..", "datasets", "js-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"JavaScript,{filename},{r['status']}") if __name__ == "__main__": main()