Files
cobol-java-v3/runners/cobol_runner.py
2026-06-18 16:31:54 +08:00

22 lines
977 B
Python

import subprocess
from pathlib import Path
from runners.runner import BuildResult, RunResult
class CobolRunner:
def compile(self, src: str, dialect="ibm", gcov: bool = False) -> BuildResult:
stem = Path(src).stem
out = str(Path(src).parent / stem)
cmd = ["cobc", "-x", f"-std={dialect}-strict", "-o", out, src]
if gcov:
cmd = ["cobc", "-x", f"-std={dialect}-strict", "-fprofile-arcs", "-ftest-coverage", "-o", out, src]
p = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
return BuildResult(success=p.returncode == 0, artifact_path=out, log=p.stdout + p.stderr)
def run(self, binary: str, input_path: str, output_path: str) -> RunResult:
with open(input_path, "rb") as f:
data = f.read()
p = subprocess.run([binary], input=data, capture_output=True, timeout=30)
Path(output_path).write_bytes(p.stdout)
return RunResult(success=p.returncode == 0)