init commit

This commit is contained in:
2026-09-19 05:42:17 -09:00
commit b57e1a406d
19 changed files with 754 additions and 0 deletions
@@ -0,0 +1,31 @@
(ns vibe.integration.coverage
"Entry point that runs the vibe server under Cloverage instrumentation so the
black-box integration tests produce a line-coverage report.
Cloverage normally instruments the source and then runs a test suite in-process.
Here the 'suite' is the outside world: the runner starts the real server and blocks
until the JVM gets SIGTERM (`docker compose stop`), then Cloverage writes its reports.
Deliberately does not require any vibe.* source namespace at load time: those must
be loaded by Cloverage (instrumented), not by us."
(:require [cloverage.coverage :as cov]))
(defmethod cov/runner-fn :integration [_]
(fn [_nses]
(let [stop (promise)
main (Thread/currentThread)]
((requiring-resolve 'vibe.core/start-server))
;; The report is written by the main thread after the runner returns, but the JVM
;; only stays up while shutdown hooks run, so the hook must wait for the main thread.
(.addShutdownHook (Runtime/getRuntime)
(Thread. (fn []
(deliver stop true)
(.join main))))
@stop
{:errors 0})))
(defn -main [& args]
;; Cloverage's own System/exit would deadlock inside the shutdown hook above.
(binding [cov/*exit-after-test* false]
(apply cov/-main args))
(shutdown-agents))