Merge branch 'retain-profile-metadata'

This commit is contained in:
Jean Niklas L'orange 2014-02-24 18:32:08 +01:00
commit 491c2c9595
3 changed files with 36 additions and 1 deletions

View file

@ -0,0 +1,14 @@
(defproject metadata-check "0.1.0"
:description "Check that profile metadata is retained."
:license {:name "Eclipse Public License"}
:dependencies [[leiningen-core "2.0.0-SNAPSHOT"]
[clucy "0.2.2" :exclusions [org.clojure/clojure]]
[lancet "1.0.1"]
[robert/hooke "1.1.2"]
[stencil "0.2.0"]]
:profiles {:bar {:dependencies ^:please-keep-me [[lancet "1.0.2"]
[stencil "0.3.0"]]
:repositories ^:replace []}
:baz {:dependencies ^:hello []
:repositories ^:displace []
:java-opts ["my" "java" "opts"]}})

View file

@ -281,7 +281,15 @@
normalizing values inside the map."
[raw-map empty-defaults]
(with-meta
(meta-merge
(merge-with
(fn [left right]
;; Assumes that left always contains :reduce OR :prepend in its meta
(with-meta
(cond (-> left meta :reduce) (-> left meta :reduce
(reduce left right))
(-> left meta :prepend) (concat right left))
(merge (meta left)
(dissoc (meta right) :top-displace))))
empty-defaults
(-> raw-map
(assoc :jvm-opts (or (:jvm-opts raw-map) (:java-opts raw-map)))

View file

@ -67,6 +67,19 @@
;; TODO: test omit-default
;; TODO: test reading project that doesn't def project
(deftest test-retain-profile-metadata
(let [actual (read (.getFile (io/resource "profile-metadata.clj")))
profiles (:profiles actual)]
(is (true? (-> profiles :bar :dependencies meta :please-keep-me)))
(is (true? (-> profiles :bar :repositories meta :replace)))
(is (true? (-> profiles :baz :dependencies meta :hello)))
(is (true? (-> profiles :baz :repositories meta :displace)))))
(deftest test-alias-in-profiles
(let [actual (read (.getFile (io/resource "profile-metadata.clj")))]
(is (= ["my" "java" "opts"]
(-> actual :profiles :baz :jvm-opts)))))
(deftest test-merge-profile-displace-replace
(let [test-profiles {:carmine {:foo [3 4]}
:carmined {:foo ^:displace [3 4]}