Skip to content

Commit

Permalink
Add functional tests for lint results
Browse files Browse the repository at this point in the history
  • Loading branch information
thumbnail committed Jan 28, 2020
1 parent 46bda96 commit 6b66de3
Show file tree
Hide file tree
Showing 12 changed files with 141 additions and 4 deletions.
3 changes: 2 additions & 1 deletion project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@

;; `dev` in :test is important - a test depends on it:
:test {:source-paths ["dev"]
:dependencies [[com.nedap.staffing-solutions/utils.test "1.6.2"]]
:dependencies [[com.nedap.staffing-solutions/utils.test "1.6.2"]
[nubank/matcher-combinators "1.0.1"]]
:jvm-opts ["-Dclojure.core.async.go-checking=true"
"-Duser.language=en-US"]
:resource-paths ["test-resources"]}
Expand Down
2 changes: 1 addition & 1 deletion src/formatting_stack/linters/eastwood.clj
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
(map (fn [{:keys [uri-or-file-name linter] :as m}]
(assoc m
:level :warning
:source (keyword "eastwood" (str linter))
:source (keyword "eastwood" (name linter))
:filename (if (string? uri-or-file-name)
uri-or-file-name
(str/replace (-> uri-or-file-name .getPath)
Expand Down
5 changes: 3 additions & 2 deletions src/formatting_stack/linters/kondo.clj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"CLJ files are also linted by eastwood, disable duplicate linters"
{:linters {:misplaced-docstring off
:deprecated-var off
:inline-def off
:redefined-var off}})

(defn lint! [{:keys [kondo-options]} filenames]
Expand All @@ -49,6 +50,6 @@
:col :column})
(assoc :source (keyword "kondo" (name type)))))))))

(defn new []
(implement {}
(defn new [{:keys [kondo-options]}]
(implement {:kondo-options kondo-options}
linter/--lint! lint!))
3 changes: 3 additions & 0 deletions test-resources/eastwood_warning.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
(ns eastwood-warning)

(def x (def y ::z))
1 change: 1 addition & 0 deletions test-resources/invalid_syntax.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#{]
4 changes: 4 additions & 0 deletions test-resources/kondo_warning.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
(ns kondo-warning)

(let [unused ::unused]
::return)
3 changes: 3 additions & 0 deletions test-resources/ns_aliases_warning.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
(ns kondo-warning
(:require
[clojure.string :as foo]))
28 changes: 28 additions & 0 deletions test/functional/formatting_stack/linters/eastwood.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
(ns functional.formatting-stack.linters.eastwood
(:require
[clojure.test :refer :all]
[formatting-stack.linters.eastwood :as sut]
[formatting-stack.protocols.linter :as linter]
[matcher-combinators.matchers :as m]
[matcher-combinators.test :refer [match?]]))

(deftest lint!
(let [linter (sut/new {})]
(are [filename expected] (match? expected
(linter/lint! linter [filename]))
;; fixme should return a :reader-exception, currently lost in :note. lint! yields empty list
#_#_
"test-resources/invalid_syntax.clj"
(m/embeds
[{:level :exception,
:filename "test-resources/invalid_syntax.clj",
:line 3,
:column 2,
:source :eastwood/lint!}])

"test-resources/eastwood_warning.clj"
(m/embeds
[{:source :eastwood/def-in-def
:line 3
:column 13
:filename "test-resources/eastwood_warning.clj"}]))))
27 changes: 27 additions & 0 deletions test/functional/formatting_stack/linters/kondo.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
(ns functional.formatting-stack.linters.kondo
(:require
[clojure.test :refer :all]
[formatting-stack.linters.kondo :as sut]
[formatting-stack.protocols.linter :as linter]
[matcher-combinators.matchers :as m]
[matcher-combinators.test :refer [match?]]))

(deftest lint!
(let [linter (sut/new {:kondo-options {:output {:exclude-files []}}})]
(are [filename expected] (match? expected
(linter/lint! linter [filename]))
"test-resources/invalid_syntax.clj"
(m/embeds
[{:level :error,
:filename "test-resources/invalid_syntax.clj",
:line 1,
:column 2,
:source :kondo/syntax}])

"test-resources/kondo_warning.clj"
(m/embeds
[{:source :kondo/unused-binding
:level :warning
:line 3
:column 7
:filename "test-resources/kondo_warning.clj"}]))))
21 changes: 21 additions & 0 deletions test/functional/formatting_stack/linters/line_length.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
(ns functional.formatting-stack.linters.line-length
(:require
[clojure.test :refer :all]
[formatting-stack.linters.line-length :as sut]
[formatting-stack.protocols.linter :as linter]
[matcher-combinators.test :refer [match?]]))

(deftest lint!
(let [linter (sut/new {:max-line-length 22})]
(are [filename expected] (match? expected
(linter/lint! linter [filename]))
"test-resources/invalid_syntax.clj"
[]

"test-resources/sample_clj_ns.clj"
[{:source :formatting-stack/line-length
:line 3
:column 23
:msg "Line exceeding 22 columns"
:filename "test-resources/sample_clj_ns.clj"}])))

21 changes: 21 additions & 0 deletions test/functional/formatting_stack/linters/loc_per_ns.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
(ns functional.formatting-stack.linters.loc-per-ns
(:require
[clojure.test :refer :all]
[formatting-stack.linters.loc-per-ns :as sut]
[formatting-stack.protocols.linter :as linter]
[matcher-combinators.test :refer [match?]]))

(deftest lint!
(let [linter (sut/new {:max-lines-per-ns 4})]
(are [filename expected] (match? expected
(linter/lint! linter [filename]))
"test-resources/invalid_syntax.clj"
[]

"test-resources/sample_clj_ns.clj"
[{:source :formatting-stack/loc-per-ns
:line 5
:column 1
:msg "Longer than 4 LOC. consider refactoring"
:filename "test-resources/sample_clj_ns.clj"}])))

27 changes: 27 additions & 0 deletions test/functional/formatting_stack/linters/ns_aliases.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
(ns functional.formatting-stack.linters.ns-aliases
(:require
[clojure.test :refer :all]
[formatting-stack.linters.ns-aliases :as sut]
[formatting-stack.protocols.linter :as linter]
[matcher-combinators.test :refer [match?]]))

(deftest lint!
(let [linter (sut/new {:max-lines-per-ns 4})]
(are [filename expected] (match? expected
(linter/lint! linter [filename]))
"test-resources/invalid_syntax.clj"
[{:source :formatting-stack/report-processing-error
:filename "test-resources/invalid_syntax.clj"
:msg "Encountered an exception"
:level :exception
:exception #(instance? Throwable %)}]

"test-resources/ns_aliases_warning.clj"
[{:source :formatting-stack/ns-aliases
:line 3
:column 4
:warning-details-url "https://stuartsierra.com/2015/05/10/clojure-namespace-aliases"
:msg "[clojure.string :as foo] is not a derived alias"
:filename "test-resources/ns_aliases_warning.clj"}])))

(run-tests)

0 comments on commit 6b66de3

Please sign in to comment.