| from pathlib import Path |
| from src.safe_subprocess import run |
|
|
|
|
| def eval_script(path: Path): |
| r = run(["tsc", "--target", "esnext", str(path)], timeout_seconds=15) |
| if r.exit_code != 0: |
| return { |
| "status": "SyntaxError", |
| "exit_code": r.exit_code, |
| "stdout": r.stdout, |
| "stderr": r.stderr, |
| } |
|
|
| r = run(["node", str(path).replace(".ts", ".js")], timeout_seconds=15) |
| if r.timeout: |
| status = "Timeout" |
| elif r.exit_code == 0: |
| status = "OK" |
| elif "ERR_ASSERTION" in r.stderr: |
| status = "AssertionError" |
| elif "SyntaxError" in r.stderr: |
| status = "SyntaxError" |
| elif "ReferenceError" in r.stderr: |
| status = "ReferenceError" |
| else: |
| status = "Exception" |
| return { |
| "status": status, |
| "exit_code": r.exit_code, |
| "stdout": r.stdout, |
| "stderr": r.stderr, |
| } |
|
|