Skip to content

Commit 83f18a9

Browse files
committed
[#3133] Check the version of cider-injected-nrepl-version at runtime
Basically, we extend the fix for cider-injected-middleware-version and encapsulate the required deps nREPL and cider-nrepl in a reusable function.
1 parent 6a6f82f commit 83f18a9

File tree

3 files changed

+34
-35
lines changed

3 files changed

+34
-35
lines changed

cider.el

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -394,9 +394,6 @@ your version of Boot or Leiningen is bundling an older one."
394394
:package-version '(cider . "1.2.0")
395395
:safe #'stringp)
396396

397-
(cider-add-to-alist 'cider-jack-in-dependencies
398-
"nrepl/nrepl" cider-injected-nrepl-version)
399-
400397
(defvar cider-jack-in-cljs-dependencies nil
401398
"List of dependencies where elements are lists of artifact name and version.
402399
Added to `cider-jack-in-dependencies' when doing `cider-jack-in-cljs'.")
@@ -540,6 +537,13 @@ LIST should have the form (ARTIFACT-NAME ARTIFACT-VERSION). The returned
540537
string is quoted for passing as argument to an inferior shell."
541538
(concat "-d " (shell-quote-argument (format "%s:%s" (car list) (cadr list)))))
542539

540+
(defun cider--jack-in-required-dependencies ()
541+
"Returns the required CIDER deps.
542+
They are normally added to `cider-jack-in-dependencies',
543+
unless it's a Lein project."
544+
`(("nrepl/nrepl" ,cider-injected-nrepl-version)
545+
("cider/cider-nrepl" ,cider-injected-middleware-version)))
546+
543547
(defun cider-boot-dependencies (dependencies)
544548
"Return a list of boot artifact strings created from DEPENDENCIES."
545549
(concat (mapconcat #'cider--list-as-boot-artifact dependencies " ")
@@ -563,7 +567,7 @@ and MIDDLEWARES. PARAMS and MIDDLEWARES are passed on to
563567
(concat global-opts
564568
(unless (seq-empty-p global-opts) " ")
565569
"-i \"(require 'cider.tasks)\" " ;; Note the space at the end here
566-
(cider-boot-dependencies (append dependencies `(("cider/cider-nrepl" ,cider-injected-middleware-version))))
570+
(cider-boot-dependencies (append (cider--jack-in-required-dependencies) dependencies))
567571
(cider-boot-middleware-task params middlewares)))
568572

569573
(defun cider--lein-artifact-exclusions (exclusions)
@@ -613,7 +617,7 @@ one used."
613617
(let* ((deps-string (string-join
614618
(seq-map (lambda (dep)
615619
(format "%s {:mvn/version \"%s\"}" (car dep) (cadr dep)))
616-
(append dependencies `(("cider/cider-nrepl" ,cider-injected-middleware-version))))
620+
(append (cider--jack-in-required-dependencies) dependencies))
617621
" "))
618622
(middleware (mapconcat
619623
(apply-partially #'format "%s")
@@ -633,7 +637,7 @@ one used."
633637
(defun cider-shadow-cljs-jack-in-dependencies (global-opts params dependencies)
634638
"Create shadow-cljs jack-in deps.
635639
Does so by concatenating GLOBAL-OPTS, DEPENDENCIES finally PARAMS."
636-
(let ((dependencies (append dependencies `(("cider/cider-nrepl" ,cider-injected-middleware-version)))))
640+
(let ((dependencies (append (cider--jack-in-required-dependencies) dependencies)))
637641
(concat
638642
global-opts
639643
(unless (seq-empty-p global-opts) " ")
@@ -672,7 +676,7 @@ dependencies."
672676
global-opts
673677
params
674678
(cider-add-clojure-dependencies-maybe
675-
cider-jack-in-dependencies)
679+
(append `(("nrepl/nrepl" ,cider-injected-nrepl-version)) cider-jack-in-dependencies))
676680
cider-jack-in-dependencies-exclusions
677681
(cider-jack-in-normalized-lein-plugins)
678682
(if cider-enrich-classpath

doc/modules/ROOT/pages/basics/up_and_running.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,6 @@ Generally you should avoid doing this, but it may be useful if you want to try
9999
a newer version or you encounter some regression that forces you to temporarily use
100100
an older version.
101101

102-
NOTE: You'll have to restart Emacs for such changes to take effect, if you've already loaded CIDER. Alternatively you can update
103-
manually the underlying dependencies list (e.g. `cider-jack-in-dependencies`).
104-
105102
CIDER can also inject a Clojure dependency into your project, which is useful,
106103
for example, if your project defaults to an older version of Clojure than that
107104
supported by the CIDER middleware. Set `cider-jack-in-auto-inject-clojure`

test/cider-tests.el

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111

112112
(describe "when there is a single dependency"
113113
(before-each
114-
(setq-local cider-jack-in-dependencies '(("nrepl/nrepl" "0.5.3")))
114+
(setq-local cider-injected-nrepl-version "0.9.0")
115115
(setq-local cider-injected-middleware-version "0.28.1")
116116
(setq-local cider-jack-in-nrepl-middlewares '("cider.nrepl/cider-middleware"))
117117
(setq-local cider-jack-in-dependencies-exclusions '())
@@ -120,7 +120,7 @@
120120
(it "can inject dependencies in a lein project"
121121
(expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein)
122122
:to-equal (concat "update-in :dependencies conj "
123-
(shell-quote-argument "[nrepl/nrepl \"0.5.3\"]")
123+
(shell-quote-argument "[nrepl/nrepl \"0.9.0\"]")
124124
" -- update-in :plugins conj "
125125
(shell-quote-argument "[cider/cider-nrepl \"0.28.1\"]")
126126
" -- update-in :plugins conj "
@@ -133,7 +133,7 @@
133133
(expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein)
134134
:to-equal (concat
135135
"update-in :dependencies conj "
136-
(shell-quote-argument "[nrepl/nrepl \"0.5.3\" :exclusions [org.clojure/clojure]]")
136+
(shell-quote-argument "[nrepl/nrepl \"0.9.0\" :exclusions [org.clojure/clojure]]")
137137
" -- update-in :plugins conj "
138138
(shell-quote-argument "[cider/cider-nrepl \"0.28.1\"]")
139139
" -- update-in :plugins conj "
@@ -145,7 +145,7 @@
145145
(setq-local cider-jack-in-dependencies-exclusions '(("nrepl/nrepl" ("org.clojure/clojure" "foo.bar/baz"))))
146146
(expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein)
147147
:to-equal (concat "update-in :dependencies conj "
148-
(shell-quote-argument "[nrepl/nrepl \"0.5.3\" :exclusions [org.clojure/clojure foo.bar/baz]]")
148+
(shell-quote-argument "[nrepl/nrepl \"0.9.0\" :exclusions [org.clojure/clojure foo.bar/baz]]")
149149
" -- update-in :plugins conj "
150150
(shell-quote-argument "[cider/cider-nrepl \"0.28.1\"]")
151151
" -- update-in :plugins conj "
@@ -158,7 +158,7 @@
158158
:to-equal (concat
159159
"-i \"(require 'cider.tasks)\""
160160
" -d "
161-
(shell-quote-argument "nrepl/nrepl:0.5.3")
161+
(shell-quote-argument "nrepl/nrepl:0.9.0")
162162
" -d "
163163
(shell-quote-argument "cider/cider-nrepl:0.28.1")
164164
" cider.tasks/add-middleware"
@@ -179,7 +179,7 @@
179179
(it "can inject dependencies in a lein project"
180180
(expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein)
181181
:to-equal (concat "update-in :dependencies conj "
182-
(shell-quote-argument "[nrepl/nrepl \"0.5.3\"]")
182+
(shell-quote-argument "[nrepl/nrepl \"0.9.0\"]")
183183
" -- update-in :plugins conj "
184184
(shell-quote-argument "[refactor-nrepl \"2.0.0\"]")
185185
" -- update-in :plugins conj "
@@ -190,15 +190,15 @@
190190
" -- repl :headless")))
191191

192192
(it "can inject dependencies in a boot project"
193-
(setq-local cider-jack-in-dependencies '(("nrepl/nrepl" "0.5.3") ("refactor-nrepl" "2.0.0")))
193+
(setq-local cider-jack-in-dependencies '(("refactor-nrepl" "2.0.0")))
194194
(expect (cider-inject-jack-in-dependencies "" "repl -s wait" 'boot)
195195
:to-equal (concat "-i \"(require 'cider.tasks)\""
196196
" -d "
197-
(shell-quote-argument "nrepl/nrepl:0.5.3")
198-
" -d "
199-
(shell-quote-argument "refactor-nrepl:2.0.0")
197+
(shell-quote-argument "nrepl/nrepl:0.9.0")
200198
" -d "
201199
(shell-quote-argument "cider/cider-nrepl:0.28.1")
200+
" -d "
201+
(shell-quote-argument "refactor-nrepl:2.0.0")
202202
" cider.tasks/add-middleware"
203203
" -m "
204204
(shell-quote-argument "refactor-nrepl.middleware/wrap-refactor")
@@ -210,13 +210,12 @@
210210
(before-each
211211
;; FIXME: Needed because its set in an earlier test
212212
(setq-local cider-jack-in-lein-plugins nil)
213-
(setq-local cider-jack-in-dependencies '(("nrepl/nrepl" "0.5.3")))
214213
(setq-local cider-jack-in-nrepl-middlewares '("cider.nrepl/cider-middleware"))
215214
(setq-local cider-jack-in-dependencies-exclusions '()))
216215
(it "can concat in a lein project"
217216
(expect (cider-inject-jack-in-dependencies "-o -U" "repl :headless" 'lein)
218217
:to-equal (concat "-o -U update-in :dependencies conj "
219-
(shell-quote-argument "[nrepl/nrepl \"0.5.3\"]")
218+
(shell-quote-argument "[nrepl/nrepl \"0.9.0\"]")
220219
" -- update-in :plugins conj "
221220
(shell-quote-argument "[cider/cider-nrepl \"0.28.1\"]")
222221
" -- update-in :plugins conj "
@@ -227,7 +226,7 @@
227226
(expect (cider-inject-jack-in-dependencies "-C -o" "repl -s wait" 'boot)
228227
:to-equal (concat "-C -o -i \"(require 'cider.tasks)\""
229228
" -d "
230-
(shell-quote-argument "nrepl/nrepl:0.5.3")
229+
(shell-quote-argument "nrepl/nrepl:0.9.0")
231230
" -d "
232231
(shell-quote-argument "cider/cider-nrepl:0.28.1")
233232
" cider.tasks/add-middleware"
@@ -292,7 +291,7 @@
292291
(it "uses them in a lein project"
293292
(expect (cider-inject-jack-in-dependencies "" "repl :headless" 'lein)
294293
:to-equal (concat "update-in :dependencies conj "
295-
(shell-quote-argument "[nrepl/nrepl \"0.5.3\"]")
294+
(shell-quote-argument "[nrepl/nrepl \"0.9.0\"]")
296295
" -- update-in :plugins conj "
297296
(shell-quote-argument "[refactor-nrepl \"2.0.0\"]")
298297
" -- update-in :plugins conj "
@@ -306,17 +305,17 @@
306305
(before-each
307306
(spy-on 'cider-jack-in-normalized-nrepl-middlewares
308307
:and-return-value '("refactor-nrepl.middleware/wrap-refactor" "cider.nrepl/cider-middleware"))
309-
(setq-local cider-jack-in-dependencies '(("nrepl/nrepl" "0.5.3") ("refactor-nrepl" "2.0.0")))
308+
(setq-local cider-jack-in-dependencies '(("refactor-nrepl" "2.0.0")))
310309
(setq-local cider-jack-in-dependencies-exclusions '()))
311310
(it "uses them in a boot project"
312311
(expect (cider-inject-jack-in-dependencies "" "repl -s wait" 'boot)
313312
:to-equal (concat "-i \"(require 'cider.tasks)\""
314313
" -d "
315-
(shell-quote-argument "nrepl/nrepl:0.5.3")
316-
" -d "
317-
(shell-quote-argument "refactor-nrepl:2.0.0")
314+
(shell-quote-argument "nrepl/nrepl:0.9.0")
318315
" -d "
319316
(shell-quote-argument "cider/cider-nrepl:0.28.1")
317+
" -d "
318+
(shell-quote-argument "refactor-nrepl:2.0.0")
320319
" cider.tasks/add-middleware"
321320
" -m "
322321
(shell-quote-argument "refactor-nrepl.middleware/wrap-refactor")
@@ -398,9 +397,8 @@
398397
"YwBsAG8AagB1AHIAZQAgACIAIgBjAG0AZAAtAHAAYQByAGEAbQBzACIAIgA="))))
399398
(describe "when 'clojure-cli project type"
400399
(it "uses main opts in an alias to prevent other mains from winning"
401-
(setq-local cider-jack-in-dependencies '(("nrepl/nrepl" "0.8.3")))
402400
(setq-local cider-jack-in-nrepl-middlewares '("cider.nrepl/cider-middleware"))
403-
(let ((expected (string-join '("clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.8.3\"} "
401+
(let ((expected (string-join '("clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} "
404402
"cider/cider-nrepl {:mvn/version \"0.28.1\"}} "
405403
":aliases {:cider/nrepl {:main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\""
406404
" \"[cider.nrepl/cider-middleware]\"]}}}' -M:cider/nrepl")
@@ -414,7 +412,7 @@
414412
(expect (plist-get (cider--update-jack-in-cmd nil) :jack-in-cmd)
415413
:to-equal expected)))
416414
(it "allows specifying custom aliases with `cider-clojure-cli-aliases`"
417-
(let ((expected (string-join '("clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.8.3\"} "
415+
(let ((expected (string-join '("clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} "
418416
"cider/cider-nrepl {:mvn/version \"0.28.1\"}} "
419417
":aliases {:cider/nrepl {:main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\""
420418
" \"[cider.nrepl/cider-middleware]\"]}}}' -M:dev:test:cider/nrepl")
@@ -428,12 +426,12 @@
428426
(expect (plist-get (cider--update-jack-in-cmd nil) :jack-in-cmd)
429427
:to-equal expected)))
430428
(it "handles aliases correctly"
431-
(let ((expected (string-join '("-Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.8.3\"} "
429+
(let ((expected (string-join '("-Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} "
432430
"cider/cider-nrepl {:mvn/version \"0.28.1\"}} "
433431
":aliases {:cider/nrepl {:main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\""
434432
" \"[cider.nrepl/cider-middleware]\"]}}}' -M:test:cider/nrepl")
435433
""))
436-
(deps '(("nrepl/nrepl" "0.8.3"))))
434+
(deps '(("nrepl/nrepl" "0.9.0"))))
437435
(let ((cider-clojure-cli-aliases ":test"))
438436
(expect (cider-clojure-cli-jack-in-dependencies nil nil deps)
439437
:to-equal expected))
@@ -451,12 +449,12 @@
451449
(expect (cider-clojure-cli-jack-in-dependencies nil nil deps)
452450
:to-equal expected)))))
453451
(it "allows for global options"
454-
(let ((expected (string-join '("-J-Djdk.attach.allowAttachSelf -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.8.3\"} "
452+
(let ((expected (string-join '("-J-Djdk.attach.allowAttachSelf -Sdeps '{:deps {nrepl/nrepl {:mvn/version \"0.9.0\"} "
455453
"cider/cider-nrepl {:mvn/version \"0.28.1\"}} "
456454
":aliases {:cider/nrepl {:main-opts [\"-m\" \"nrepl.cmdline\" \"--middleware\""
457455
" \"[cider.nrepl/cider-middleware]\"]}}}' -M:test:cider/nrepl")
458456
""))
459-
(deps '(("nrepl/nrepl" "0.8.3"))))
457+
(deps '(("nrepl/nrepl" "0.9.0"))))
460458
(let ((cider-clojure-cli-aliases ":test"))
461459
(expect (cider-clojure-cli-jack-in-dependencies "-J-Djdk.attach.allowAttachSelf" nil deps)
462460
:to-equal expected))))))

0 commit comments

Comments
 (0)