[#780] Ignore empty classpath entries

This commit is contained in:
Michiel Borkent 2021-04-22 12:33:17 +02:00
parent 15e71b0807
commit 657a88c348
2 changed files with 27 additions and 5 deletions

View file

@ -47,9 +47,10 @@
(path-from-jar jar-file resource-paths opts)))
(defn part->entry [part]
(if (str/ends-with? part ".jar")
(JarFileResolver. (io/file part))
(DirectoryResolver. (io/file part))))
(when-not (str/blank? part)
(if (str/ends-with? part ".jar")
(JarFileResolver. (io/file part))
(DirectoryResolver. (io/file part)))))
(deftype Loader [entries]
IResourceResolver
@ -62,7 +63,7 @@
(defn loader [^String classpath]
(let [parts (.split classpath path-sep)
entries (map part->entry parts)]
entries (keep part->entry parts)]
(Loader. entries)))
(defn source-for-namespace [loader namespace opts]

View file

@ -4,6 +4,13 @@
[clojure.string :as str]
[clojure.test :as t :refer [deftest is testing]]))
(defn count-entries [jar]
(with-open [jar-file (java.util.jar.JarFile. jar)]
(count (map #_prn
identity
(enumeration-seq
(.entries jar-file))))))
(deftest uberjar-test
(testing "uberjar with --main"
(let [tmp-file (java.io.File/createTempFile "uber" ".jar")
@ -36,4 +43,18 @@
;; running
(is (= "(\"42\")\n" (tu/bb nil "--jar" path "-m" "my.main-main" "42")))
(is (= "(\"42\")\n" (tu/bb nil "--classpath" path "-m" "my.main-main" "42")))
(is (= "(\"42\")\n" (tu/bb nil path "42")))))))
(is (= "(\"42\")\n" (tu/bb nil path "42"))))))
(testing "throw on empty classpath"
(let [tmp-file (java.io.File/createTempFile "uber" ".jar")
path (.getPath tmp-file)]
(.deleteOnExit tmp-file)
(is (thrown-with-msg?
Exception #"classpath"
(tu/bb nil "uberjar" path "-m" "my.main-main")))))
(testing "ignore empty entries on classpath"
(let [tmp-file (java.io.File/createTempFile "uber" ".jar")
path (.getPath tmp-file)]
(.deleteOnExit tmp-file)
(tu/bb nil "--classpath" ":::" "uberjar" path "-m" "my.main-main")
;; Only a manifest entry is added
(is (< (count-entries path) 3)))))