Skip to content

Commit

Permalink
fix: Fix upgrader to work with deps containing metadata
Browse files Browse the repository at this point in the history
cf. #189
  • Loading branch information
liquidz committed Nov 16, 2022
1 parent ffc790a commit 48cc2e3
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/antq/upgrade/clojure.clj
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@
:else
loc)))

(defn- skip-meta
[loc]
(if (= :meta (z/tag loc))
(-> loc
(z/down)
(z/right))
loc))

(defn upgrade-dep
[loc version-checked-dep]
(let [name-set (u.dep/name-candidates (:name version-checked-dep))]
Expand All @@ -65,7 +73,9 @@
(recur (if (in-deps? loc)
(or (some-> loc
;; move to map
(z/right) (z/down)
(z/right)
(skip-meta)
(z/down)
(replace-versions version-checked-dep))
(z/next loc))
(z/next loc)))
Expand Down
36 changes: 36 additions & 0 deletions test/antq/upgrade/clojure_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@
:file (io/resource "dep/test_deps.edn")
:extra {:sha "123456789x123456789x123456789x123456789x"}}))

(def ^:private dummy-short-meta-dep
(r/map->Dependency {:project :clojure
:type :java
:name "short-meta"
:latest-version "9.0.0"
:file (io/resource "dep/test_deps.edn")}))

(def ^:private dummy-full-meta-dep
(r/map->Dependency {:project :clojure
:type :java
:name "full-meta"
:latest-version "9.0.0"
:file (io/resource "dep/test_deps.edn")}))

(def ^:private dummy-no-version-dep
(r/map->Dependency {:project :clojure
:type :java
Expand Down Expand Up @@ -123,6 +137,28 @@
:+ "9876543210abcdefghijklmnopqrstuvwxyz1234"}}}
(h/diff-deps from-deps to-deps))))))

(t/testing "short meta"
(let [from-deps (->> dummy-short-meta-dep
:file
(slurp)
(dep.clj/extract-deps ""))
to-deps (->> dummy-short-meta-dep
(upgrade/upgrader)
(dep.clj/extract-deps ""))]
(t/is (= #{{:name "short-meta/short-meta" :version {:- "2.5.8" :+ "9.0.0"}}}
(h/diff-deps from-deps to-deps)))))

(t/testing "full meta"
(let [from-deps (->> dummy-full-meta-dep
:file
(slurp)
(dep.clj/extract-deps ""))
to-deps (->> dummy-full-meta-dep
(upgrade/upgrader)
(dep.clj/extract-deps ""))]
(t/is (= #{{:name "full-meta/full-meta" :version {:- "2.6.9" :+ "9.0.0"}}}
(h/diff-deps from-deps to-deps)))))

(t/testing "no corresponding value"
(let [from-deps (->> dummy-no-version-dep
:file
Expand Down
4 changes: 4 additions & 0 deletions test/resources/dep/test_deps.edn
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
;; local/root
local-repo/local-repo {:local/root "./local"}

;; metadata
short-meta ^:foo/bar {:mvn/version "2.5.8"}
full-meta ^{:foo/bar true} {:mvn/version "2.6.9"}

;; should be ignored
local-repo/non-existing {:local/root "/path/to/non-existing-local/repo"}
;; invalid versions should be ignored
Expand Down

0 comments on commit 48cc2e3

Please sign in to comment.