Merge pull request #1218 from leon-barrett/line-fix
Fixed long line support in make-manifest.
This commit is contained in:
commit
8f566613df
2 changed files with 26 additions and 16 deletions
|
@ -22,18 +22,22 @@
|
|||
"Built-By" (System/getProperty "user.name")
|
||||
"Build-Jdk" (System/getProperty "java.version")})
|
||||
|
||||
(defn- manifest-entry [project manifest [k v]]
|
||||
(cond (symbol? v) (manifest-entry project manifest [k (resolve v)])
|
||||
(fn? v) (manifest-entry project manifest [k (v project)])
|
||||
:else (str manifest "\n" (name k) ": " v)))
|
||||
(defn- manifest-entry [project [k v]]
|
||||
(cond (symbol? v) (manifest-entry project [k (resolve v)])
|
||||
(fn? v) (manifest-entry project [k (v project)])
|
||||
:else (->> (str (name k) ": " v)
|
||||
(partition-all 70) ;; Manifest spec says lines <= 72 chars
|
||||
(map (partial apply str))
|
||||
(string/join "\n ") ;; Manifest spec says join with "\n "
|
||||
(format "%s\n"))))
|
||||
|
||||
(defn ^:internal make-manifest [project]
|
||||
(-> (reduce (partial manifest-entry project)
|
||||
"Manifest-Version: 1.0"
|
||||
(merge default-manifest (:manifest project)
|
||||
(->> (merge default-manifest (:manifest project)
|
||||
(if-let [main (:main project)]
|
||||
{"Main-Class" (.replaceAll (str main) "-" "_")})))
|
||||
(str "\n") ;; Add an endline character to make Manifest happy.
|
||||
{"Main-Class" (.replaceAll (str main) "-" "_")}))
|
||||
(map (partial manifest-entry project))
|
||||
(cons "Manifest-Version: 1.0\n") ;; Manifest-Version line must be first
|
||||
(string/join "")
|
||||
.getBytes
|
||||
ByteArrayInputStream.
|
||||
Manifest.))
|
||||
|
|
|
@ -9,9 +9,13 @@
|
|||
overlapped-sourcepaths-project]])
|
||||
(:import (java.util.jar JarFile)))
|
||||
|
||||
(def long-line
|
||||
(apply str (repeat 10000 "a")))
|
||||
|
||||
(def mock-project {:name "mock-project" :version "1.0"
|
||||
:main 'foo.one-two.three-four.bar
|
||||
:manifest {"hello" "world"}})
|
||||
:manifest {"hello" "world"
|
||||
"long-line" long-line}})
|
||||
|
||||
(deftest test-manifest
|
||||
(let [mm (-> mock-project
|
||||
|
@ -19,8 +23,10 @@
|
|||
manifest-map)]
|
||||
(is (= {"Main-Class" "foo.one_two.three_four.bar", "hello" "world"}
|
||||
(select-keys mm ["hello" "Main-Class"])))
|
||||
(is (= #{"Manifest-Version" "Main-Class" "hello" "Created-By" "Built-By" "Build-Jdk"}
|
||||
(-> mm keys set)))))
|
||||
(is (= #{"Manifest-Version" "Main-Class" "hello" "Created-By" "Built-By"
|
||||
"Build-Jdk" "long-line"}
|
||||
(-> mm keys set)))
|
||||
(is (= (get mm "long-line") long-line))))
|
||||
|
||||
(deftest test-jar-fails
|
||||
(binding [*err* (java.io.PrintWriter. (platform-nullsink))]
|
||||
|
|
Loading…
Reference in a new issue