babashka/test/babashka/print_deps_test.clj
Teodor Heggelund de06c199f1
bb print-deps: sort dependencies (#1582)
* `bb print-deps`: sort dependencies

Co-authored-by: Teodor Heggelund <git@teod.eu>
2023-06-28 18:17:06 +02:00

29 lines
1.2 KiB
Clojure

(ns babashka.print-deps-test
(:require [babashka.deps :as deps]
[babashka.fs :as fs]
[babashka.test-utils :refer [bb]]
[borkdude.rewrite-edn :as r]
[clojure.string :as str]
[clojure.test :refer [deftest is testing]]
[rewrite-clj.node :as n]
[sci.core :as sci]))
(deftest print-deps-test
(let [deps (bb nil "print-deps" "--format" "deps")]
(testing "printed deps map can be read by Clojure"
(let [tmp-dir (fs/create-temp-dir)]
(spit (fs/file tmp-dir "deps.edn") deps)
(let [cp (sci/with-out-str
(deps/clojure ["-Spath"] {:dir (str tmp-dir)}))]
(is (str/includes? cp "babashka.curl")))
(fs/delete-tree tmp-dir)))
(testing "keys in dep map are sorted"
(let [values-sorted? (fn [xs] (= xs (sort xs)))
deps-edn-str-deps-keys (fn [s]
(->> (r/get (r/parse-string s) :deps)
n/child-sexprs
(partition 2)
(map first)))]
(is (values-sorted? (deps-edn-str-deps-keys deps)))))))