File tree Expand file tree Collapse file tree 5 files changed +55
-5
lines changed Expand file tree Collapse file tree 5 files changed +55
-5
lines changed Original file line number Diff line number Diff line change 4141 [cljs.env :as env]
4242 [cljs.js-deps :as deps]
4343 [clojure.java.io :as io]
44+ [clojure.set :as set]
4445 [clojure.string :as string]
4546 [clojure.data.json :as json])
4647 (:import [java.io File BufferedInputStream StringWriter]
725726 (find-cljs-dependencies [" cljs.core" " clojure.string" ])
726727 )
727728
729+ (defn- module-entries
730+ " Return the module entries of `compile-opts` as a set."
731+ [compile-opts]
732+ (->> compile-opts :modules vals
733+ (map :entries )
734+ (remove nil?)
735+ (apply concat)
736+ (set )))
737+
728738(defn add-dependency-sources
729739 " Given list of IJavaScript objects, produce a new sequence of IJavaScript objects
730740 of all dependencies of inputs."
731- [inputs]
732- (let [inputs (set inputs)
733- requires (set (mapcat deps/-requires inputs))]
734- (into inputs (find-cljs-dependencies requires))))
741+ ([inputs]
742+ (add-dependency-sources inputs nil ))
743+ ([inputs compile-opts]
744+ (let [inputs (set inputs)
745+ requires (set (mapcat deps/-requires inputs))
746+ module-entries (module-entries compile-opts)]
747+ (into inputs (find-cljs-dependencies (set/union requires module-entries))))))
735748
736749(defn check-unprovided
737750 [inputs]
18501863 (assoc all-opts :output-file (:output-to all-opts))
18511864 all-opts)
18521865 js-sources (-> (-find-sources source all-opts)
1853- add-dependency-sources
1866+ ( add-dependency-sources compile-opts)
18541867 deps/dependency-order
18551868 (compile-sources compiler-stats compile-opts)
18561869 (add-js-sources all-opts)
Original file line number Diff line number Diff line change 1+ (ns module-test.main )
2+
3+ (defn ^:export main []
4+ (println " Loading modules A and B ..." ))
Original file line number Diff line number Diff line change 1+ (ns module-test.modules.a )
2+
3+ (defn ^:export main []
4+ (println " Module A loaded." ))
Original file line number Diff line number Diff line change 1+ (ns module-test.modules.b )
2+
3+ (defn ^:export main []
4+ (println " Module B loaded." ))
Original file line number Diff line number Diff line change 120120 (build srcs opts)
121121 (is (not (every? #(zero? (.length %)) [common-tmp app-tmp]))
122122 " The files are not empty after compilation" )))
123+
124+ (deftest cljs-1500-test-modules
125+ (let [module-main (io/file " out/module-main.js" )
126+ module-a (io/file " out/module-a.js" )
127+ module-b (io/file " out/module-b.js" )]
128+ (.delete module-main)
129+ (.delete module-a)
130+ (.delete module-b)
131+ (build
132+ (inputs " src/test/cljs" )
133+ {:main " module-test.main"
134+ :optimizations :advanced
135+ :verbose true
136+ :modules
137+ {:cljs-base
138+ {:output-to (str module-main)}
139+ :module-a
140+ {:output-to (str module-a)
141+ :entries #{'module-test.modules.a}}
142+ :module-b
143+ {:output-to (str module-b)
144+ :entries #{'module-test.modules.b}}}})
145+ (is (re-find #"Loading modules A and B" (slurp module-main)))
146+ (is (re-find #"Module A loaded" (slurp module-a)))
147+ (is (re-find #"Module B loaded" (slurp module-b)))))
You can’t perform that action at this time.
0 commit comments