/
deps_edn_test.clj
93 lines (83 loc) · 4.75 KB
/
deps_edn_test.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
(ns clj-kondo.deps-edn-test
(:require [clj-kondo.test-utils :refer [lint! assert-submaps]]
[clojure.test :refer [deftest testing is]]))
(deftest qualified-lib-test
(let [deps-edn '{:deps {clj-kondo {:mvn/version "2020.10.10"}}
:aliases {:foo {:extra-deps {clj-kondo {:mvn/version "2020.10.10"
:exclusions [cheshire]}}}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 9, :level :warning, :message "Libs must be qualified, change clj-kondo => clj-kondo/clj-kondo"}
{:file "deps.edn", :row 1, :col 78, :level :warning, :message "Libs must be qualified, change clj-kondo => clj-kondo/clj-kondo"}
{:file "deps.edn", :row 1, :col 129, :level :warning, :message "Libs must be qualified, change cheshire => cheshire/cheshire"})
(lint! deps-edn
"--filename" "deps.edn"))))
(deftest coordinate-map-test
(let [deps-edn '{:deps {foobar/bar "2020.20"}
:aliases {:foo {:extra-deps {foobar/baz "2020.20"}}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 20, :level :warning, :message "Expected map, found: java.lang.String"}
{:file "deps.edn", :row 1, :col 72, :level :warning, :message "Expected map, found: java.lang.String"})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest coordinate-required-key-test
(let [deps-edn '{:deps {foobar/bar {:mvn/release "2020.20"}}
:aliases {:foo {:extra-deps {foo/bar1 {:git/url "..."
:git/sha "..."}}}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 20, :level :warning, :message "Missing required key: :mvn/version, :git/url or :local/root."}
{:file "deps.edn", :row 1, :col 85, :level :warning, :message "Missing required key :sha."})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest non-deterministic-version-test
(let [deps-edn '{:deps {foobar/bar {:mvn/version "RELEASE"}}
:aliases {:foo {:extra-deps {foo/bar1 {:mvn/version "LATEST"}}}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 20, :level :warning, :message "Non-determistic version."}
{:file "deps.edn", :row 1, :col 85, :level :warning, :message "Non-determistic version."})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest alias-keyword-names-test
(let [deps-edn '{:aliases {foo {:extra-deps {foo/bar1 {:mvn/version "..."}}}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 12, :level :warning, :message "Prefer keyword for alias."})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest suspicious-alias-name-test
(let [deps-edn '{:aliases {:deps {foo/bar1 {:mvn/version "..."}}
:extra-deps {foo/bar1 {:mvn/version "..."}}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 12, :level :warning, :message "Suspicious alias name: deps"}
{:file "deps.edn", :row 1, :col 51, :level :warning, :message "Suspicious alias name: extra-deps"})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest jvm-opts-test
(let [deps-edn '{:aliases {:jvm {:jvm-opts "-Dfoobar"}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 28, :level :warning, :message "JVM opts should be seqable of strings."})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest mvn-repos-test
(let [deps-edn '{:mvn/repos {"foo" "bar"
"baz" {:link "..."}}}
deps-edn (binding [*print-namespace-maps* false] (str deps-edn))]
(assert-submaps
'({:file "deps.edn", :row 1, :col 20, :level :warning, :message "Expected: map with :url."}
{:file "deps.edn", :row 1, :col 33, :level :warning, :message "Expected: map with :url."})
(lint! (str deps-edn)
"--filename" "deps.edn"))))
(deftest namespaced-map-test
(let [deps-edn "{:deps #:clj-kondo{clj-kondo {:mvn/version \"2020.11.07\"}}}"]
(is (empty?
(lint! (str deps-edn)
"--filename" "deps.edn")))))
(deftest ignore-test
(let [deps-edn "{:deps #_:clj-kondo/ignore {clj-kondo {:mvn/version \"2020.11.07\"}}}"]
(is (empty? (lint! (str deps-edn)
"--filename" "deps.edn")))))