|
8 | 8 | (def ^:dynamic *handler* cider-nrepl-handler)
|
9 | 9 | (def ^:dynamic *session* nil)
|
10 | 10 |
|
| 11 | +(def ^:dynamic *server* nil) |
| 12 | +(def ^:dynamic *transport* nil) |
| 13 | + |
| 14 | +(defn repl-session! |
| 15 | + "Start an nREPL session and set *session* accordingly. |
| 16 | +
|
| 17 | + Eval'ing this function in the REPL will allow you to test out messages |
| 18 | + with [[message]]. |
| 19 | +
|
| 20 | + When dealing with tests that use [[session-fixture]], this can help you to be |
| 21 | + able to evaluate test forms in the REPL. Call [[close-session!]] when you're |
| 22 | + done." |
| 23 | + [] |
| 24 | + (let [server (start-server :handler *handler*) |
| 25 | + transport (nrepl/connect :port (:port server)) |
| 26 | + client (nrepl/client transport Long/MAX_VALUE)] |
| 27 | + (alter-var-root #'*server* (constantly server)) |
| 28 | + (alter-var-root #'*transport* (constantly transport)) |
| 29 | + (alter-var-root #'*session* (constantly (nrepl/client-session client))))) |
| 30 | + |
| 31 | +(defn close-session! |
| 32 | + "Stop the server/session created by [[repl-session!]], and reset the vars." |
| 33 | + [] |
| 34 | + (.close *server*) |
| 35 | + (.close *transport*) |
| 36 | + (alter-var-root #'*server* (constantly nil)) |
| 37 | + (alter-var-root #'*transport* (constantly nil)) |
| 38 | + (alter-var-root #'*session* (constantly nil))) |
| 39 | + |
11 | 40 | (defn session-fixture
|
12 | 41 | [f]
|
13 |
| - (with-open [server (start-server :handler *handler*) |
| 42 | + (with-open [server (start-server :handler *handler*) |
14 | 43 | transport (nrepl/connect :port (:port server))]
|
15 |
| - (let [client (nrepl/client transport Long/MAX_VALUE)] |
16 |
| - (binding [*session* (nrepl/client-session client)] |
| 44 | + (let [client (nrepl/client transport Long/MAX_VALUE) |
| 45 | + session (nrepl/client-session client)] |
| 46 | + (binding [*server* server |
| 47 | + *transport* transport |
| 48 | + *session* session] |
17 | 49 | (f)))))
|
18 | 50 |
|
19 | 51 | (defn message
|
|
0 commit comments