diff --git a/src/antq/dep/clojure.clj b/src/antq/dep/clojure.clj index 142bcb6a..245a17ba 100644 --- a/src/antq/dep/clojure.clj +++ b/src/antq/dep/clojure.clj @@ -11,14 +11,21 @@ (defn- ignore? [opt] - (contains? opt :local/root)) + (and (map? opt) + (contains? opt :local/root))) (defmulti extract-type-and-version (fn [opt] - (or (and (:mvn/version opt) :java) - (and (:git/url opt) :git-sha)))) + (if (map? opt) + (or (and (:mvn/version opt) :java) + (and (:git/url opt) :git-sha)) + ::unknown))) (defmethod extract-type-and-version :default + [_] + {}) + +(defmethod extract-type-and-version :java [opt] {:type :java :version (:mvn/version opt)}) @@ -35,7 +42,8 @@ edn (edn/read-string deps-edn-content-str)] (walk/postwalk (fn [form] (when (and (sequential? form) - (#{:deps :extra-deps :replace-deps :override-deps} (first form))) + (#{:deps :extra-deps :replace-deps :override-deps} (first form)) + (map? (second form))) (->> form (second) (seq) diff --git a/test/antq/dep/clojure_test.clj b/test/antq/dep/clojure_test.clj index a5a63f3c..75cc3fe2 100644 --- a/test/antq/dep/clojure_test.clj +++ b/test/antq/dep/clojure_test.clj @@ -39,6 +39,11 @@ :extra {:url "https://github.com/example/hello.git"}})} (set deps))))) +(t/deftest extract-deps-unexpected-test + (t/is (empty? (sut/extract-deps file-path "[:deps \"foo\"]"))) + (t/is (empty? (sut/extract-deps file-path "{:deps \"foo\"}"))) + (t/is (empty? (sut/extract-deps file-path "{:deps {foo/core \"bar\"}}")))) + (t/deftest load-deps-test (let [deps (sut/load-deps "test/resources/dep")] (t/is (every? #(contains? #{:java :git-sha} (:type %)) deps))))