Spaces:
Running
Running
""" | |
Evaluates a generated Clojure program (.clj). | |
""" | |
import os | |
import tempfile | |
from pathlib import Path | |
from src.safe_subprocess import run | |
from src.libeval import run_without_exn | |
def eval_script(path: Path): | |
# Create environment with a writable temporary directory for Clojure cache | |
temp_dir = tempfile.mkdtemp(prefix="clojure_home_") | |
env = os.environ.copy() | |
env["XDG_CONFIG_HOME"] = temp_dir # Set XDG_CONFIG_HOME for Clojure cache | |
env["XDG_DATA_HOME"] = temp_dir # Set XDG_DATA_HOME for Clojure data | |
env["XDG_CACHE_HOME"] = temp_dir # Set XDG_CACHE_HOME for caches | |
# Run Clojure with the custom environment | |
result = run( | |
["clojure", "-J-Dclojure.main.report=stderr", "-M", str(path)], | |
env=env | |
) | |
if result.timeout: | |
status = "Timeout" | |
elif result.exit_code != 0: | |
status = "Exception" | |
elif "\n0 failures, 0 errors.\n" in result.stdout: | |
status = "OK" | |
else: # test failure | |
status = "Exception" | |
return { | |
"status": status, | |
"exit_code": result.exit_code, | |
"stdout": result.stdout, | |
"stderr": result.stderr, | |
} | |
if __name__ == "__main__": | |
print("This module is not meant to be executed directly.") | |