Skip to content

Commit a0be7ac

Browse files
[inspect] Use orchard.inspect/refresh instead of individual setters
1 parent 41e2787 commit a0be7ac

File tree

4 files changed

+71
-59
lines changed

4 files changed

+71
-59
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## master (unreleased)
44

5+
### Changes
6+
7+
* Bump `orchard` to [0.26.0](https://github.com/clojure-emacs/orchard/blob/master/CHANGELOG.md#0260-2024-06-30).
8+
59
## 0.48.0 (2024-05-13)
610

711
### Changes

project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
:url "http://www.eclipse.org/legal/epl-v10.html"}
99
:scm {:name "git" :url "https://github.com/clojure-emacs/cider-nrepl"}
1010
:dependencies [[nrepl "1.1.1" :exclusions [org.clojure/clojure]]
11-
[cider/orchard "0.25.0" :exclusions [org.clojure/clojure]]
11+
[cider/orchard "0.26.0" :exclusions [org.clojure/clojure]]
1212
^:inline-dep [mx.cider/haystack "0.3.3" :exclusions [cider/orchard]]
1313
^:inline-dep [thunknyc/profile "0.5.2"]
1414
^:inline-dep [mvxcvi/puget "1.3.4" :exclusions [org.clojure/clojure]]

src/cider/nrepl/middleware/inspect.clj

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,18 @@
6262
(doseq [^Class interface (.getInterfaces clazz)]
6363
(info/info 'user (-> interface .getCanonicalName symbol)))))))
6464

65+
(defn- msg->inspector-config [msg]
66+
(let [config (select-keys msg [:page-size :max-atom-length :max-coll-size
67+
:max-value-length :max-nested-depth :spacious])]
68+
(if (contains? config :spacious)
69+
(update config :spacious #(case %
70+
("false" "nil") false
71+
true))
72+
config)))
73+
6574
(defn inspect-reply*
6675
[msg value]
67-
(let [config (select-keys msg [:page-size :max-atom-length :max-coll-size
68-
:max-value-length :max-nested-depth :spacious])
69-
config (if (contains? config :spacious)
70-
(update config :spacious #(case %
71-
("false" "nil") false
72-
true))
73-
config)
76+
(let [config (msg->inspector-config msg)
7477
inspector (swap-inspector! msg #(inspect/start (merge % config) value))]
7578
(warmup-javadoc-cache (class (:value inspector)))
7679
(inspector-response msg inspector {})))
@@ -128,29 +131,20 @@
128131
(defn previous-sibling-reply [msg]
129132
(inspector-response msg (swap-inspector! msg inspect/previous-sibling)))
130133

131-
(defn refresh-reply [msg]
132-
(inspector-response msg (swap-inspector! msg inspect/inspect-render)))
133-
134134
(defn next-page-reply [msg]
135135
(inspector-response msg (swap-inspector! msg inspect/next-page)))
136136

137137
(defn prev-page-reply [msg]
138138
(inspector-response msg (swap-inspector! msg inspect/prev-page)))
139139

140-
(defn set-page-size-reply [msg]
141-
(inspector-response msg (swap-inspector! msg inspect/set-page-size (:page-size msg))))
142-
143-
(defn set-max-atom-length-reply [msg]
144-
(inspector-response msg (swap-inspector! msg inspect/set-max-atom-length
145-
(:max-atom-length msg))))
146-
147-
(defn set-max-coll-size-reply [msg]
148-
(inspector-response msg (swap-inspector! msg inspect/set-max-coll-size
149-
(:max-coll-size msg))))
140+
(defn refresh-reply [msg]
141+
(let [overrides (msg->inspector-config msg)]
142+
(inspector-response msg (swap-inspector! msg #(inspect/refresh % overrides)))))
150143

151-
(defn set-max-nested-depth-reply [msg]
152-
(inspector-response msg (swap-inspector! msg inspect/set-max-nested-depth
153-
(:max-nested-depth msg))))
144+
(defn ^:deprecated set-page-size-reply [msg] (refresh-reply msg))
145+
(defn ^:deprecated set-max-atom-length-reply [msg] (refresh-reply msg))
146+
(defn ^:deprecated set-max-coll-size-reply [msg] (refresh-reply msg))
147+
(defn ^:deprecated set-max-nested-depth-reply [msg] (refresh-reply msg))
154148

155149
(defn clear-reply [msg]
156150
(inspector-response msg (swap-inspector! msg (constantly (inspect/start nil)))))
@@ -173,13 +167,13 @@
173167
"inspect-push" push-reply
174168
"inspect-next-sibling" next-sibling-reply
175169
"inspect-previous-sibling" previous-sibling-reply
176-
"inspect-refresh" refresh-reply
177170
"inspect-next-page" next-page-reply
178171
"inspect-prev-page" prev-page-reply
179-
"inspect-set-page-size" set-page-size-reply
180-
"inspect-set-max-atom-length" set-max-atom-length-reply
181-
"inspect-set-max-coll-size" set-max-coll-size-reply
182-
"inspect-set-max-nested-depth" set-max-nested-depth-reply
172+
"inspect-refresh" refresh-reply
173+
"inspect-set-page-size" refresh-reply
174+
"inspect-set-max-atom-length" refresh-reply
175+
"inspect-set-max-coll-size" refresh-reply
176+
"inspect-set-max-nested-depth" refresh-reply
183177
"inspect-clear" clear-reply
184178
"inspect-def-current-value" def-current-value
185179
"inspect-tap-current-value" tap-current-value

test/clj/cider/nrepl/middleware/inspect_test.clj

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -282,28 +282,43 @@
282282
(is (:pp-stacktrace response)))))
283283

284284
(testing "inspect-set-page-size error handling"
285-
(with-redefs [i/swap-inspector! (fn [& _] (throw (Exception. "page-size exception")))]
286-
(let [response (session/message {:op "inspect-set-page-size" :page-size 10})]
287-
(is (= (:status response) #{"inspect-set-page-size-error" "done"}))
288-
(is (= (:ex response) "class java.lang.Exception"))
289-
(is (-> response ^String (:err) (.startsWith "java.lang.Exception: page-size exception")))
290-
(is (:pp-stacktrace response)))))
285+
(let [response (session/message {:op "inspect-set-page-size" :page-size 0})]
286+
(is (= #{"inspect-set-page-size-error" "done"} (:status response)))
287+
(is (= "class clojure.lang.ExceptionInfo" (:ex response)))
288+
(is (match? #".*Precondition failed: \(pos-int\? page-size\).*" (:err response)))
289+
(is (:pp-stacktrace response)))
290+
291+
(let [response (session/message {:op "inspect-refresh" :page-size 0})]
292+
(is (= #{"inspect-refresh-error" "done"} (:status response)))
293+
(is (= "class clojure.lang.ExceptionInfo" (:ex response)))
294+
(is (match? #".*Precondition failed: \(pos-int\? page-size\).*" (:err response)))
295+
(is (:pp-stacktrace response))))
291296

292297
(testing "inspect-set-max-atom-length error handling"
293-
(with-redefs [i/swap-inspector! (fn [& _] (throw (Exception. "max-atom-length exception")))]
294-
(let [response (session/message {:op "inspect-set-max-atom-length" :max-atom-length 10})]
295-
(is (= (:status response) #{"inspect-set-max-atom-length-error" "done"}))
296-
(is (= (:ex response) "class java.lang.Exception"))
297-
(is (-> response ^String (:err) (.startsWith "java.lang.Exception: max-atom-length exception")))
298-
(is (:pp-stacktrace response)))))
298+
(let [response (session/message {:op "inspect-set-max-atom-length" :max-atom-length 0})]
299+
(is (= #{"inspect-set-max-atom-length-error" "done"} (:status response)))
300+
(is (= "class clojure.lang.ExceptionInfo" (:ex response)))
301+
(is (match? #".*Precondition failed: \(pos-int\? max-atom-length\).*" (:err response)))
302+
(is (:pp-stacktrace response)))
303+
304+
(let [response (session/message {:op "inspect-refresh" :max-atom-length 0})]
305+
(is (= #{"inspect-refresh-error" "done"} (:status response)))
306+
(is (= "class clojure.lang.ExceptionInfo" (:ex response)))
307+
(is (match? #".*Precondition failed: \(pos-int\? max-atom-length\).*" (:err response)))
308+
(is (:pp-stacktrace response))))
299309

300310
(testing "inspect-set-max-coll-size error handling"
301-
(with-redefs [i/swap-inspector! (fn [& _] (throw (Exception. "max-coll-size exception")))]
302-
(let [response (session/message {:op "inspect-set-max-coll-size" :max-coll-size 10})]
303-
(is (= (:status response) #{"inspect-set-max-coll-size-error" "done"}))
304-
(is (= (:ex response) "class java.lang.Exception"))
305-
(is (-> response ^String (:err) (.startsWith "java.lang.Exception: max-coll-size exception")))
306-
(is (:pp-stacktrace response))))))
311+
(let [response (session/message {:op "inspect-set-max-coll-size" :max-coll-size 0})]
312+
(is (= #{"inspect-set-max-coll-size-error" "done"} (:status response)))
313+
(is (= "class clojure.lang.ExceptionInfo" (:ex response)))
314+
(is (match? #".*Precondition failed: \(pos-int\? max-coll-size\).*" (:err response)))
315+
(is (:pp-stacktrace response)))
316+
317+
(let [response (session/message {:op "inspect-refresh" :max-coll-size 0})]
318+
(is (= #{"inspect-refresh-error" "done"} (:status response)))
319+
(is (= "class clojure.lang.ExceptionInfo" (:ex response)))
320+
(is (match? #".*Precondition failed: \(pos-int\? max-coll-size\).*" (:err response)))
321+
(is (:pp-stacktrace response)))))
307322

308323
(deftest inspect-var-integration-test
309324
(testing "rendering a var"
@@ -367,7 +382,7 @@
367382
(session/message {:op "eval"
368383
:inspect "true"
369384
:code "(map identity (range 35))"})
370-
(session/message {:op "inspect-set-page-size"
385+
(session/message {:op "inspect-refresh"
371386
:page-size 5})
372387
(session/message {:op "inspect-next-page"})
373388
(session/message {:op "inspect-prev-page"})))))))
@@ -473,14 +488,14 @@
473488
(is (re-find #"Page size: 5, showing page: 2 of 20"
474489
(extract-text small-page-2)))))
475490

476-
(testing "page size can be changed via the inspect-set-page-size op"
491+
(testing "page size can be changed via the inspect-refresh op"
477492
(session/message {:op "inspect-clear"})
478493
(let [normal-page-size (session/message {:op "eval"
479494
:inspect "true"
480495
:code "(range 100)"})
481496
normal-page-2 (session/message {:op "inspect-next-page"})
482497

483-
small-page-size (session/message {:op "inspect-set-page-size"
498+
small-page-size (session/message {:op "inspect-refresh"
484499
:page-size 5})
485500
small-page-2 (session/message {:op "inspect-next-page"})
486501

@@ -535,11 +550,11 @@
535550
:code too-long})
536551
extract-text)
537552
(x-pattern max-len "...")))
538-
(is (string/includes? (-> (session/message {:op "inspect-set-max-atom-length"
553+
(is (string/includes? (-> (session/message {:op "inspect-refresh"
539554
:max-atom-length 10})
540555
extract-text)
541556
(x-pattern 10 "...")))
542-
(is (string/includes? (-> (session/message {:op "inspect-set-max-atom-length"
557+
(is (string/includes? (-> (session/message {:op "inspect-refresh"
543558
:max-atom-length 20})
544559
extract-text)
545560
(x-pattern 20 "..."))))))
@@ -548,16 +563,15 @@
548563
(let [max-len (:max-value-length @#'orchard.inspect/default-inspector-config)
549564
extract-text #(-> % :value first)]
550565

551-
;; TODO: reduce leeway once orchard.print truncation is fixed
552566
(testing "max value length can be set for the eval op"
553-
(is (< (- max-len 10)
567+
(is (< max-len
554568
(-> (session/message {:op "eval"
555569
:inspect "true"
556570
:code infinite-map-code})
557571
extract-text
558572
count)
559-
(+ max-len 2000)))
560-
(is (< 490
573+
(+ max-len 300)))
574+
(is (< 500
561575
(-> (session/message {:op "eval"
562576
:inspect "true"
563577
:code infinite-map-code
@@ -599,9 +613,9 @@
599613
(let [default-coll-size (session/message {:op "eval"
600614
:inspect "true"
601615
:code big-coll})
602-
large-coll-size (session/message {:op "inspect-set-max-coll-size"
616+
large-coll-size (session/message {:op "inspect-refresh"
603617
:max-coll-size big-size})
604-
smaller-coll-size (session/message {:op "inspect-set-max-coll-size"
618+
smaller-coll-size (session/message {:op "inspect-refresh"
605619
:max-coll-size (dec big-size)})
606620
unchanged-default-coll-size (do (session/message {:op "inspect-clear"})
607621
(session/message {:op "eval"
@@ -638,7 +652,7 @@
638652
(let [default (session/message {:op "eval"
639653
:inspect "true"
640654
:code nested-coll})
641-
limited (session/message {:op "inspect-set-max-nested-depth"
655+
limited (session/message {:op "inspect-refresh"
642656
:max-nested-depth 5})]
643657
(is (string/includes? (extract-text default)
644658
"\"[ [ [ [ [ [ [ [ [ [ 1 ] ] ] ] ] ] ] ] ] ]\""))

0 commit comments

Comments
 (0)