Skip to content

Commit

Permalink
fix: Fix clojure upgrader to work with destructed version
Browse files Browse the repository at this point in the history
cf. #241
  • Loading branch information
liquidz committed Dec 2, 2023
1 parent 020a847 commit 2fa448f
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 2 deletions.
12 changes: 11 additions & 1 deletion src/antq/upgrade/clojure.clj
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@
(and (in-deps? loc)
(not (ignoring-meta? (z/right loc)))))

(defn- down-considering-namespaced-map
"cf. https://github.com/clj-commons/rewrite-clj/blob/main/doc/01-user-guide.adoc#impact-of-namespaced-map-context-on-keywords-and-symbols"
[loc]
(if (z/namespaced-map? loc)
(-> loc
(z/down)
(z/rightmost)
(z/down))
(z/down loc)))

(defmulti replace-versions
(fn [_loc version-checked-dep]
(:type version-checked-dep)))
Expand Down Expand Up @@ -87,7 +97,7 @@
(z/right)
;; TODO check antq/ignore
(skip-meta)
(z/down)
(down-considering-namespaced-map)
(replace-versions version-checked-dep))
(z/next loc))
(z/next loc)))
Expand Down
8 changes: 7 additions & 1 deletion test/antq/dep/clojure_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,13 @@
:repositories nil})
(java-dependency {:name "local/nested-core" :version "8.8.8"
:file (.getAbsolutePath (io/file (io/resource "dep/local/nested/test_deps.edn")))
:repositories nil})}
:repositories nil})
(java-dependency {:name "namespaced/mvn" :version "1.0.0"})
(git-sha-dependency {:name "namespaced/sha" :version "1234567890abcdefghijklmnopqrstuvwxyz1234"
:extra {:url "https://github.com/example/git-sha.git"}})
(git-tag-dependency {:name "namespaced/tag-and-sha" :version "v1.2.3"
:extra {:url "https://github.com/example/tag-short.git"
:sha "123abcd"}})}
(set deps))))))

(t/deftest extract-deps-cross-project-configuration-test
Expand Down
62 changes: 62 additions & 0 deletions test/antq/upgrade/clojure_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,28 @@
:latest-version "9.9.9"
:file (io/resource "dep/test_deps.edn")}))

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

(def ^:private dummy-namespaced-sha-dep
(r/map->Dependency {:project :clojure
:type :git-sha
:name "namespaced/sha"
:latest-version "new-sha"
:file (io/resource "dep/test_deps.edn")}))

(def ^:private dummy-namespaced-tag-and-sha-dep
(r/map->Dependency {:project :clojure
:type :git-tag-and-sha
:name "namespaced/tag-and-sha"
:latest-version "v9.9.9"
:file (io/resource "dep/test_deps.edn")
:extra {:sha "123abcd"}}))

(t/deftest upgrade-dep-test
(t/testing "java"
(let [from-deps (->> dummy-java-dep
Expand Down Expand Up @@ -169,6 +191,46 @@
(t/is (= #{{:name "full-meta/full-meta" :version {:- "2.6.9" :+ "9.0.0"}}}
(h/diff-deps from-deps to-deps)))))

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

(t/testing "namespaced git-sha"
(let [from-deps (->> dummy-namespaced-sha-dep
:file
(slurp)
(dep.clj/extract-deps ""))
to-deps (->> dummy-namespaced-sha-dep
(upgrade/upgrader)
(dep.clj/extract-deps ""))]
(t/is (= #{{:name "namespaced/sha"
:url "https://github.com/example/git-sha.git"
:version {:- "1234567890abcdefghijklmnopqrstuvwxyz1234"
:+ "new-sha"}}}
(h/diff-deps from-deps to-deps)))))

(t/testing "namespaced git-tag-and-sha"
(with-redefs [u.git/tag-sha-by-ls-remote (constantly "9876543210abcdefghijklmnopqrstuvwxyz1234")]
(let [from-deps (->> dummy-namespaced-tag-and-sha-dep
:file
(slurp)
(dep.clj/extract-deps ""))
to-deps (->> dummy-namespaced-tag-and-sha-dep
(upgrade/upgrader)
(dep.clj/extract-deps ""))]
(t/is (= #{{:name "namespaced/tag-and-sha"
:url "https://github.com/example/tag-short.git"
:version {:- "v1.2.3" :+ "v9.9.9"}
:sha {:- "123abcd" :+ "9876543"}}}
(h/diff-deps from-deps to-deps))))))

(t/testing "no corresponding value"
(let [from-deps (->> dummy-no-version-dep
:file
Expand Down
7 changes: 7 additions & 0 deletions test/resources/dep/test_deps.edn
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
short-meta ^:foo/bar {:mvn/version "2.5.8"}
full-meta ^{:foo/bar true} {:mvn/version "2.6.9"}

;; namespaced map
namespaced/mvn #:mvn{:version "1.0.0"}
namespaced/sha #:git{:url "https://github.com/example/git-sha.git"
:sha "1234567890abcdefghijklmnopqrstuvwxyz1234"}
namespaced/tag-and-sha #:git{:url "https://github.com/example/tag-short.git"
:tag "v1.2.3" :sha "123abcd"}

;; should be ignored
local-repo/non-existing {:local/root "/path/to/non-existing-local/repo"}
meta-ignore ^:antq/exclude {:mvn/version "3.5.8"}
Expand Down

0 comments on commit 2fa448f

Please sign in to comment.