Skip to content

Commit ef56db9

Browse files
borkdudeswannodette
authored andcommitted
CLJS-3033: Maintain backward compatibility test.check keyword
CLJS-2964 unified the key for passing clojure.test.check options with Clojure. This introduced a breaking change. This commit unbreaks that change by maintaining backward compatibility, supporting both keywords.
1 parent 731be5e commit ef56db9

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

src/main/cljs/cljs/spec/test/alpha.cljc

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,11 +193,17 @@ Returns a collection of syms naming the vars unstrumented."
193193
[[quote s :as qs] f spec opts]
194194
(let [{:keys [name] :as v} (when qs (ana-api/resolve &env s))]
195195
`(let [s# '~name
196-
opts# ~opts
197196
v# ~(when v `(var ~name))
198197
spec# (or ~spec ~(when v `(s/get-spec (var ~name))))
199198
re-inst?# (and v# (seq (unstrument '~name)) true)
200-
f# (or ~f (when v# @v#))]
199+
f# (or ~f (when v# @v#))
200+
opts# ~opts
201+
old-tc-ns# "clojure.test.check"
202+
old-tc-opts-key# (keyword old-tc-ns# "opts")
203+
[tc-ns# opts#] (if-let [old-tc-opts# (get opts# old-tc-opts-key#)]
204+
[old-tc-ns# (assoc opts# :clojure.spec.test.check/opts
205+
old-tc-opts#)]
206+
["clojure.spec.test.check" opts#])]
201207
(try
202208
(cond
203209
(nil? f#)
@@ -206,7 +212,8 @@ Returns a collection of syms naming the vars unstrumented."
206212

207213
(:args spec#)
208214
(let [tcret# (#'quick-check f# spec# opts#)]
209-
(#'make-check-result s# spec# tcret#))
215+
(#'make-check-result s# spec# tcret#
216+
(keyword tc-ns# "ret")))
210217

211218
:default
212219
{:failure (ex-info "No :args spec" {::s/failure :no-args-spec})

src/main/cljs/cljs/spec/test/alpha.cljs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@ with explain-data + ::s/failure."
236236

237237
(defn- make-check-result
238238
"Builds spec result map."
239-
[check-sym spec test-check-ret]
239+
[check-sym spec test-check-ret tc-ret-key]
240240
(merge {:spec spec
241-
:clojure.spec.test.check/ret test-check-ret}
241+
tc-ret-key test-check-ret}
242242
(when check-sym
243243
{:sym check-sym})
244244
(when-let [result (-> test-check-ret :result)]

src/test/cljs/cljs/spec/test_test.cljs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,3 +164,16 @@
164164
:clojure.spec.test.check/ret
165165
:num-tests)))
166166
check-res))))
167+
168+
(defn cljs-3033 [x] true)
169+
(s/fdef cljs-3033 :args (s/cat :x int?) :ret true?)
170+
171+
(deftest test-cljs-3033
172+
(let [check-res
173+
(stest/check `cljs-3033 {:clojure.test.check/opts {:num-tests 1}})]
174+
(is (seq check-res))
175+
(is (every? (fn [res]
176+
(= 1 (-> res
177+
:clojure.test.check/ret
178+
:num-tests)))
179+
check-res))))

0 commit comments

Comments
 (0)