image: nimlang/nim:2.2.10 stages: - test - build test: stage: test script: - make test - make build - echo "=== hello ===" && ./cljnim run examples/hello.clj - echo "=== core ===" && ./cljnim run examples/core.clj - echo "=== math ===" && ./cljnim run examples/math.clj - echo "=== macros ===" && ./cljnim run examples/macros.clj - echo "=== ai_tools ===" && ./cljnim run examples/ai_tools.clj || true - echo "=== ffi ===" && ./cljnim run examples/ffi.clj - echo "=== interop ===" && ./cljnim run examples/interop.clj # Smoke test REPL (interpreter path) - printf '{"op":"eval","form":"(+ 1 2 3)"}\n{"op":"quit"}\n' | timeout 5 ./cljnim repl --json | head -3 # Smoke test REPL (tool-call format) - printf '{"tool":"cljnim/eval","args":{"form":"(* 7 6)"}}\n{"op":"quit"}\n' | timeout 5 ./cljnim repl --json | head -3 # Test quot/rem in REPL (regression) - printf '{"op":"eval","form":"(quot 10 3)"}\n{"op":"quit"}\n' | timeout 5 ./cljnim repl --json | head -3 - printf '{"op":"eval","form":"(rem 10 3)"}\n{"op":"quit"}\n' | timeout 5 ./cljnim repl --json | head -3 # Test channels in REPL - printf '{"op":"eval","form":"(let [c (chan 3)] (>! c 42) (