Repository navigation
Expand file tree
/
Copy pathjar.clj
More file actions
56 lines (48 loc) · 2.04 KB
/
Copy pathjar.clj
File metadata and controls
56 lines (48 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(ns leiningen.test.jar
(:require [clojure.java.io :as io]
[leiningen.core.main :as main]
[leiningen.core.eval :refer [platform-nullsink]]
[leiningen.test.helper :as helper])
(:use [clojure.test]
[leiningen.jar])
(: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"
"long-line" long-line}})
(deftest test-manifest
(let [mm (-> mock-project
make-manifest
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" "long-line"}
(-> mm keys set)))
(is (= (get mm "long-line") long-line))))
(deftest test-jar-fails
(binding [*err* (java.io.PrintWriter. (platform-nullsink))]
(is (thrown? Exception (jar helper/sample-failing-project)))))
(deftest test-directory-entries-added-to-jar
(with-out-str
(let [jar (first (vals (jar helper/with-resources-project)))
entry-names (set (helper/walkzip jar #(.getName %)))]
(is (entry-names "nested/dir/"))
(is (not (some #(.startsWith % "/") entry-names))))))
(deftest test-no-aot-jar-succeeds
(with-out-str
(is (jar helper/sample-no-aot-project))))
(deftest ^:online test-no-deps-jar
(let [[coord jar-file] (first
(jar (dissoc helper/sample-project
:dependencies :main)))]
(is (.exists (io/file jar-file)))
(is (= coord [:extension "jar"]))))
(deftest overlapped-paths
(let [info-logs (atom [])]
(with-redefs [main/info (fn [& args] (swap! info-logs conj args))]
(let [result (jar helper/overlapped-sourcepaths-project)]
(is result)
(is (not-any? #(re-find #"Warning" %) (mapcat identity @info-logs)))))))