|
9 | 9 | [clojure.java.io :as io] |
10 | 10 | [clojure.string :as str] |
11 | 11 | [lazytest.core :refer [defdescribe expect it]] |
12 | | - [lazytest.extensions.matcher-combinators :refer [match?]]) |
| 12 | + [lazytest.extensions.matcher-combinators :refer [match?]] |
| 13 | + [noahtheduke.splint.runner :as splint :refer [prepare-rules]] |
| 14 | + [noahtheduke.splint.test-helpers :refer [with-out-str-data-map]] |
| 15 | + [noahtheduke.splint.config :as conf] |
| 16 | + [noahtheduke.splint.rules :refer [global-rules]] |
| 17 | + [noahtheduke.splint.parser :refer [parse-file]]) |
13 | 18 | (:import |
14 | 19 | (java.io File))) |
15 | 20 |
|
16 | 21 | (set! *warn-on-reflection* true) |
17 | 22 |
|
| 23 | +(defdescribe dogfooding-test |
| 24 | + (it "no diagnostics in splint" |
| 25 | + (match? {:result {:diagnostics [] |
| 26 | + :exit 0}} |
| 27 | + (-> (splint/run ["--quiet" "--no-parallel" "dev" "src" "test"]) |
| 28 | + (with-out-str-data-map) |
| 29 | + ((fn [{results :result}] |
| 30 | + {:result {:diagnostics (:diagnostics results) |
| 31 | + :exit (:exit results)}})))))) |
| 32 | + |
| 33 | +(defdescribe splint-clj-test |
| 34 | + (let [requires (->> (parse-file {:contents (slurp "src/noahtheduke/splint.clj")}) |
| 35 | + (first) ; ns form |
| 36 | + (last) ; rules :require |
| 37 | + (next) ; drop :require |
| 38 | + ,)] |
| 39 | + (it "lists every rule" |
| 40 | + (expect (= requires (sort requires)) |
| 41 | + "Rules in `noahtheduke.splint` must be in sorted order.")) |
| 42 | + (it "has all of the rules in the rules config" |
| 43 | + (let [rule-names (->> requires |
| 44 | + (map str) |
| 45 | + (map #(take-last 2 (str/split % #"\."))) |
| 46 | + (map #(symbol (first %) (last %)))) |
| 47 | + config-rule-names (-> @conf/default-config |
| 48 | + (assoc :clojure-version {:major 99}) |
| 49 | + (prepare-rules (:rules @global-rules)) |
| 50 | + :rules |
| 51 | + (->> (remove #(.equals "dev" (:genre (val %)))) |
| 52 | + (map (comp str key)) |
| 53 | + (map #(str/replace % "?" "")) |
| 54 | + (map symbol)))] |
| 55 | + (expect (= (set rule-names) (set config-rule-names))))))) |
| 56 | + |
18 | 57 | (defdescribe config-test |
19 | 58 | (it "has sorted default config" |
20 | 59 | (let [default-config (slurp (io/resource "config/default.edn")) |
|
0 commit comments