-
Notifications
You must be signed in to change notification settings - Fork 0
/
hello_test.clj
74 lines (60 loc) · 1.96 KB
/
hello_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
(ns hello-test
(:require [clojure.test :as t :refer [deftest is]]
[kaocha.plugin :as plugin :refer [defplugin]]
[kaocha.repl :as k]))
(deftest hello-1
(is (= 1 1)))
(deftest hello-2
(is (= 2 2)))
(deftest hello-3
(is (= 3 3)))
(defn un-sort-recursive [test-plan]
(if-let [tests (:kaocha.test-plan/tests test-plan)]
(if (= (:kaocha.testable/type test-plan) :kaocha.type/ns)
(assoc test-plan
:kaocha.test-plan/tests
(->> tests
(sort-by #(-> %
:kaocha.testable/meta
:line))))
(assoc test-plan
:kaocha.test-plan/tests
(->> tests
(map un-sort-recursive))))
test-plan))
(defn un-sort-exclude [test-plan]
(if-let [tests (:kaocha.test-plan/tests test-plan)]
(if-let [dont-randomize? (:dont-randomize? test-plan)]
(un-sort-recursive test-plan)
(assoc test-plan
:kaocha.test-plan/tests
(->> tests
(map un-sort-exclude))))
test-plan))
(defplugin hello-test/randomize-exclude
(post-load [test-plan]
(def tt test-plan)
(un-sort-exclude test-plan)))
(defn find-order [test-plan]
(loop [tp test-plan
order []]
(if-let [tests (:kaocha.test-plan/tests tp)]
(if (= (:kaocha.testable/type tp) :kaocha.type/ns)
(recur tests (concat order (map #(-> % :kaocha.testable/meta :name) tests)))
(recur tests (mapcat find-order tests)))
order)))
(comment
;; run to populate `tt`
(k/run)
(find-order tt)
;; => (hello-3 hello-1 hello-2)
(find-order (un-sort-exclude tt))
;; => (hello-1 hello-2 hello-3)
;; testing after including :other tests
(k/run-all)
(find-order tt)
;; => (hello-3 hello-1 hello-2 other-3 other-2 other-1)
;; this only un-sorts :hello plan and not :other plan
(find-order (un-sort-exclude tt))
;; => (hello-1 hello-2 hello-3 other-3 other-2 other-1)
,)