|
| 1 | +(ns cider.nrepl.main-test |
| 2 | + (:require [cider.nrepl :refer [wrap-debug cider-middleware]] |
| 3 | + [cider-nrepl.main :as m] |
| 4 | + [clojure.test :refer :all] |
| 5 | + [clojure.tools.nrepl :as nrepl] |
| 6 | + [clojure.tools.nrepl.server :as nrepl.server] |
| 7 | + [clojure.tools.nrepl.transport :as transport])) |
| 8 | + |
| 9 | +(defn start-stop-nrepl-session [opts] |
| 10 | + (with-open [server (#'m/start-nrepl opts) |
| 11 | + transport (nrepl/connect :port (:port server))] |
| 12 | + (transport/send transport {:op "clone" :id 1}) |
| 13 | + (let [session-id (:new-session (transport/recv transport 1000))] |
| 14 | + (assert session-id) |
| 15 | + (transport/send transport {:session session-id |
| 16 | + :id 2 |
| 17 | + :op "clone"}) |
| 18 | + (is (= (:status (transport/recv transport 1000)) ["done"]))))) |
| 19 | + |
| 20 | +(deftest start-nrepl-test |
| 21 | + (testing "passing a specific handler should work" |
| 22 | + (let [opts {:handler nrepl.server/default-handler}] |
| 23 | + (start-stop-nrepl-session opts))) |
| 24 | + |
| 25 | + (testing "passing a sequence instead of a map shouldn't crash" |
| 26 | + (let [opts ["cider.nrepl/cider-middleware"]] |
| 27 | + (start-stop-nrepl-session opts))) |
| 28 | + |
| 29 | + (testing "passing nil shouldn't crash" |
| 30 | + (let [opts nil] |
| 31 | + (start-stop-nrepl-session opts))) |
| 32 | + |
| 33 | + (testing "passing valid middleware should work" |
| 34 | + (let [opts {:middleware ["cider.nrepl/cider-middleware"]}] |
| 35 | + (start-stop-nrepl-session opts))) |
| 36 | + |
| 37 | + (testing "passing options as given by boot task middleware should work" |
| 38 | + (let [opts {:middleware '(cider.nrepl.middleware.version/wrap-version |
| 39 | + cider.nrepl.middleware.apropos/wrap-apropos) |
| 40 | + :port nil |
| 41 | + :bind nil}] |
| 42 | + (start-stop-nrepl-session opts)))) |
| 43 | + |
0 commit comments