Skip to content

Commit

Permalink
Add test for gradle support #83
Browse files Browse the repository at this point in the history
  • Loading branch information
liquidz committed Jun 18, 2021
1 parent a841101 commit 1c41ef5
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/antq/dep/gradle.clj
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
(ns antq.dep.gradle
(:require
[antq.log :as log]
[antq.record :as r]
[antq.util.dep :as u.dep]
[clojure.java.io :as io]
[clojure.java.shell :as sh]
[clojure.string :as str]))

(def gradle-command "gradle")
(def ^:private project-file "build.gradle")
(def ^:private dep-regexp #"^[^-]\-+\s")

(defn- filter-deps-from-gradle-dependencies
[file-path]
(let [{:keys [exit out]} (sh/sh "gradle" "--build-file" file-path "--quiet" "dependencies")]
(let [{:keys [exit out]} (sh/sh gradle-command
"--build-file" file-path
"--quiet"
"dependencies")]
(if (= 0 exit)
(->> (str/split-lines out)
(filter seq)
Expand All @@ -22,29 +27,31 @@
(throw (ex-info "Failed to run gradle" {:exit exit})))))

(defn- convert-grandle-dependency
"e.g. dep-str: 'org.clojure:clojure:1.10.0'"
"e.g. dep-str: 'org.clojure:clojure:1.10.0'
NOTE: Extracting repositories is not supported currently"
[file-path dep-str]
(let [[group-id artifact-id version] (str/split dep-str #":" 3)]
(r/map->Dependency {:project :gradle
:type :java
:file file-path
:name (str group-id "/" artifact-id)
:version version
#_#_:repositories repositories})))
:version version})))

(defn extract-deps
[file-path]
[relative-file-path absolute-file-path]
(try
(let [deps (filter-deps-from-gradle-dependencies file-path)
deps (map #(convert-grandle-dependency file-path %) deps)]
(let [deps (filter-deps-from-gradle-dependencies absolute-file-path)
deps (map #(convert-grandle-dependency relative-file-path %) deps)]
deps)
(catch Exception _
;; FIXME
(catch Exception ex
(log/error (.getMessage ex))
nil)))

(defn load-deps
([] (load-deps "."))
([dir]
(let [file (io/file dir project-file)]
(when (.exists file)
(extract-deps (u.dep/relative-path file))))))
(log/error "WARN: Custom repositories for Gradle are not supported currently.")
(extract-deps (u.dep/relative-path file)
(.getAbsolutePath file))))))
33 changes: 33 additions & 0 deletions test/antq/dep/gradle_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
(ns antq.dep.gradle-test
(:require
[antq.dep.gradle :as sut]
[antq.record :as r]
[clojure.java.io :as io]
[clojure.test :as t]))

(def ^:private file-path
"path/to/build.gradle")

(defn- java-dependency
[m]
(r/map->Dependency (merge {:project :gradle
:type :java
:file file-path}
m)))

(t/deftest extract-deps-test
(let [deps (sut/extract-deps
file-path
(.getPath (io/resource "dep/build.gradle")))]
(t/is (= #{(java-dependency {:name "nrepl/nrepl" :version "0.6.0"})
(java-dependency {:name "org.ajoberstar/jovial" :version "0.3.0"})
(java-dependency {:name "org.clojure/tools.namespace" :version "1.0.0"})
(java-dependency {:name "org.clojure/clojure" :version "1.10.0"})}
(set deps)))))

(t/deftest extract-deps-command-error-test
(with-redefs [sut/gradle-command "__non-existing-command__"]
(let [deps (sut/extract-deps
file-path
(.getPath (io/resource "dep/build.gradle")))]
(t/is (nil? deps)))))

0 comments on commit 1c41ef5

Please sign in to comment.