Skip to content

Commit fefa61a

Browse files
committed
Skip tests
1 parent 3bbfd18 commit fefa61a

1 file changed

Lines changed: 57 additions & 34 deletions

File tree

‎src/runner.clj‎

Lines changed: 57 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -69,22 +69,21 @@
6969
(defn verbose-enough? [ctx expected-lvl]
7070
(>= (or (:verbosity ctx) 0) expected-lvl))
7171

72-
(defn run-step [ctx step]
72+
(defn exec-step [{:keys [conf steps] :as ctx} step]
7373
(cond
7474
;; skip next steps if some previous one in the test-case was failed
75-
(:failed ctx)
75+
(or (:failed? ctx) (:skip step))
7676
(do
77-
(i-or-vv ctx
78-
(println (colors/yellow "skip step") (:id step)))
79-
ctx)
77+
(println (colors/yellow "skip step") (:id step))
78+
(assoc step :skipped? true))
8079

8180
:else
8281
(do
83-
(i-or-vv ctx
82+
(i-or-vv conf
8483
(print (colors/yellow "run step") (:id step))
8584
(flush)
86-
(if (:interactive ctx) (read-line) (println)))
87-
(if-let [req (mk-req ctx step)]
85+
(if (:interactive conf) (read-line) (println)))
86+
(if-let [req (mk-req conf step)]
8887
(let [{s :status :as resp} (http/request req)
8988
b (when-let [b (:body resp)]
9089
(cheshire.core/parse-string b keyword))
@@ -93,7 +92,7 @@
9392
(->> (matcho/match resp m)
9493
(reduce (fn [acc {pth :path exp :expected}]
9594
(assoc-in acc pth {:expected exp})) {})))]
96-
(vv ctx
95+
(vv conf
9796
(when (:desc step)
9897
(println (str (or (:desc step) ""))))
9998
(println "Request")
@@ -105,52 +104,75 @@
105104

106105
(if (empty? errs)
107106
(do
108-
(i ctx (println (colors/green "passed")))
109-
ctx)
107+
(i conf (println (colors/green "passed")))
108+
step)
110109
(do
111-
(i ctx (println (colors/red "failed")))
112-
(assoc ctx
113-
:failed true
114-
:failed-step (:id step)
110+
(i conf (println (colors/red "failed")))
111+
(pprint/pretty {:ident 0 :path [] :errors errs} resp)
112+
(assoc step
113+
:failed? true
115114
:errors errs
116115
:resp resp))))
117-
(assoc ctx :failed true :message "Cannot create requrest")))))
116+
(assoc step :failed? true :message "Cannot create requrest")))))
118117

119118
(defn get-id [test-case]
120119
(or (:id test-case) (:filename test-case)))
121120

122-
(defn run-test-case [ctx test-case]
123-
(i ctx
124-
(println "run test case" (:id test-case)))
125-
(let [result (reduce #(run-step %1 %2) ctx (:steps test-case))]
126121

127-
(if (:failed result)
122+
(defn run-step [{:keys [conf steps] :as ctx} step]
123+
(let [result (exec-step ctx step)]
124+
(-> ctx
125+
(update
126+
:steps #(conj % result))
127+
(merge (if (:failed? result) {:failed? true
128+
:failed-step (:id result)
129+
:resp (:resp result)
130+
:errors (:errors result)}
131+
nil)))))
132+
133+
(defn- run-steps
134+
[conf test-case]
135+
(reduce run-step {:conf conf :steps []} (:steps test-case)))
136+
137+
(defn run-test-case [conf test-case]
138+
(println "run test case" (:id test-case))
139+
140+
(let [result (run-steps conf test-case)]
141+
(if (:failed? result)
128142
(println (colors/red "failed") (str (get-id test-case) "." (:failed-step result)))
129143
(println (colors/green "passed") (:id test-case)))
130144

131-
(when (:errors result)
145+
#_(when (:errors result)
132146
(pprint/pretty {:ident 0 :path [] :errors (:errors result)} (:resp result)))
133147
(assoc result :id (:id test-case))))
134148

135-
(defn run-file [ctx filename]
136-
(let [test-case (update (assoc (yaml/parse-string (slurp filename))
137-
:filename filename)
138-
:id #(if (nil? %) filename %))]
149+
(defn- read-test-case
150+
[filename]
151+
(-> filename
152+
slurp
153+
yaml/parse-string
154+
(assoc
155+
:filename filename)
156+
(update
157+
:id #(if (nil? %) filename %))))
158+
159+
(defn run-file [{conf :conf test-cases :test-cases :as ctx} filename]
160+
(let [test-case (read-test-case filename)]
139161
(when (valid? ctx test-case)
140-
(let [result (run-test-case ctx test-case)]
162+
(let [result (run-test-case conf test-case)]
141163
(update-in ctx [:test-cases] #(conj % result))))))
142164

143-
(defn get-summary [{tests :test-cases}]
144-
(let [failed-tests (filter :failed tests)
145-
passed-tests (filter #(-> % :failed not) tests)]
165+
(defn get-summary [{test-cases :test-cases}]
166+
(let [failed-tests (filter :failed? test-cases)
167+
passed-tests (filter #(-> % :failed? not) test-cases)]
146168
{:failed-tests failed-tests
147169
:passed-tests passed-tests
148170
:count-failed-tests (count failed-tests)
149-
:count-all-tests (count tests)
171+
:count-all-tests (count test-cases)
150172
:count-passed-tests (count passed-tests)}))
151173

152-
(defn run [ctx files]
153-
(let [result (reduce run-file (assoc ctx :test-cases []) files)
174+
(defn run [conf files]
175+
(let [result (reduce run-file {:conf conf :test-cases []} files)
154176
summary (get-summary result)
155177
passed? (zero? (:count-failed-tests summary))]
156178

@@ -161,9 +183,10 @@
161183
(println (:count-passed-tests summary) "passed,"
162184
(:count-failed-tests summary) "failed.")
163185
(println "Failed tests:")
164-
(doseq [test-case (filter :failed (:test-cases result))]
186+
(doseq [test-case (filter :failed? (:test-cases result))]
165187
(println (:id test-case) (str "(" (:filename result) ")")))))
166188

189+
#_(clojure.pprint/pprint result)
167190
(assoc result :passed? passed?)))
168191

169192
(comment

0 commit comments

Comments
 (0)