Requiring clojure.spec.test.alpha requires dependency on clojure.test.check while this is not strictly needed.
The require is done only for the alias here:https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/spec/test/alpha.cljs#L19
while in https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/spec/gen/alpha.cljs#L27it's dynamically loaded.
Proposal: use fully qualified keywords without requiring the namespace clojure.test.check.
clojure.test.check
One other improvement could be made to unify Clojure spec and CLJS spec: use clojure.spec.test.check instead of clojure.test.check for passing options to clojure.test.check, see https://github.com/clojure/spec.alpha/blob/master/src/main/clojure/clojure/spec/test/alpha.clj#L19 and CLJS-2952.
clojure.spec.test.check
Repro:
$ clj -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version "1.10.439"}}}' -m cljs.main -re node -r ClojureScript 1.10.439 cljs.user=> (require '[clojure.spec.test.alpha :as stest]) clojure.lang.ExceptionInfo: No such namespace: clojure.test.check, could not locate clojure/test/check.cljs, clojure/test/check.cljc, or JavaScript source providing "clojure.test.check" in file file:/Users/Borkdude/.m2/repository/org/clojure/clojurescript/1.10.439/clojurescript-1.10.439.jar!/cljs/spec/test/alpha.cljs {:tag :cljs/analysis-error}
With patch:
$ clj -R:cljs/dev -m cljs.main -re node -r cljs.user=> (require '[clojure.spec.test.alpha :as stest]) nil
Requiring clojure.spec.test.alpha requires dependency on clojure.test.check while this is not strictly needed.
The require is done only for the alias here:
https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/spec/test/alpha.cljs#L19
while in https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/spec/gen/alpha.cljs#L27
it's dynamically loaded.
Proposal: use fully qualified keywords without requiring the namespace
clojure.test.check.One other improvement could be made to unify Clojure spec and CLJS spec: use
clojure.spec.test.checkinstead ofclojure.test.checkfor passing options toclojure.test.check, see https://github.com/clojure/spec.alpha/blob/master/src/main/clojure/clojure/spec/test/alpha.clj#L19 and CLJS-2952.Repro:
$ clj -Sdeps '{:deps {org.clojure/clojurescript {:mvn/version "1.10.439"}}}' -m cljs.main -re node -r ClojureScript 1.10.439 cljs.user=> (require '[clojure.spec.test.alpha :as stest]) clojure.lang.ExceptionInfo: No such namespace: clojure.test.check, could not locate clojure/test/check.cljs, clojure/test/check.cljc, or JavaScript source providing "clojure.test.check" in file file:/Users/Borkdude/.m2/repository/org/clojure/clojurescript/1.10.439/clojurescript-1.10.439.jar!/cljs/spec/test/alpha.cljs {:tag :cljs/analysis-error}With patch:
$ clj -R:cljs/dev -m cljs.main -re node -r cljs.user=> (require '[clojure.spec.test.alpha :as stest]) nil