This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-07-20
Channels
- # announcements (1)
- # babashka (32)
- # beginners (100)
- # cider (43)
- # clj-kondo (4)
- # cljdoc (3)
- # cljs-dev (5)
- # cljsjs (2)
- # cljsrn (22)
- # clojure (170)
- # clojure-australia (27)
- # clojure-europe (25)
- # clojure-nl (3)
- # clojure-uk (76)
- # clojurescript (127)
- # conjure (14)
- # core-matrix (1)
- # cursive (9)
- # datomic (6)
- # defnpodcast (1)
- # emacs (32)
- # events (1)
- # expound (77)
- # fulcro (30)
- # graalvm (21)
- # graalvm-mobile (30)
- # helix (4)
- # honeysql (1)
- # hyperfiddle (1)
- # jackdaw (8)
- # jobs (6)
- # kaocha (1)
- # leiningen (4)
- # lsp (16)
- # malli (46)
- # meander (4)
- # off-topic (19)
- # pathom (10)
- # podcasts-discuss (1)
- # portal (2)
- # re-frame (7)
- # reagent (2)
- # releases (1)
- # remote-jobs (11)
- # rewrite-clj (8)
- # shadow-cljs (9)
- # tools-deps (243)
- # vim (1)
I'll try to summarize what we are trying to do. Sorry for the wall of text... the main challenge with Chui and kaocha-cljs2 is that we want to let people decide how to compile their ClojureScript. Which tool they use (cljs.main, figwheel, lein-cljsbuild, shadow, etc), or the compiler flags (e.g. optimization level) should be up to the user. This is a lesson we learned from kaocha-cljs1. There we did the compilation ourselves (through cljs's pREPL interface), and this turned out to rule out a lot of use cases. People would rely on specific compiler settings which wouldn't be compatible with the REPL (e.g. advanced), or they would rely on shadow-specific behavior. So now the compilation is pluggable, you give us a function which handles the build step, we just ask that you include our runner into your build. When the build is done we launch a JS environment, and communicate with that runner. In order to find which tests to run the runner inspects the analyzer state (via a macro), hence why we need to make sure test namespaces have been analyzed at that point.
The easiest solution with existing features would be that we generate a namespace with all the necessary requires and write it out to the filesystem, and ask people to include that in their builds.