Skip to content

Commit 65be913

Browse files
authored
Merge pull request #451 from frenchy64/fix-test-seq
Fix test-seq{-with-skipped} with {root,nested} testable
2 parents e789dad + 491ed9e commit 65be913

3 files changed

Lines changed: 93 additions & 23 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
- Fix beholder watch functionality that would cause a NullPointerException earlier.
88
- Resolve reflective calls in profiling plugin.
9+
- Fix `kaocha.testable/test-seq` not respecting `:kaocha.testable/skip` on root testable
10+
- Fix `kaocha.testable/test-seq-with-skipped` omitting skipped tests on nested testables
911

1012
## Changed
1113

src/kaocha/testable.clj

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -228,22 +228,24 @@
228228
result))))
229229

230230
(defn test-seq [testable]
231-
(cond->> (mapcat test-seq (remove ::skip (or (:kaocha/tests testable)
232-
(:kaocha.test-plan/tests testable)
233-
(:kaocha.result/tests testable))))
234-
;; When calling test-seq on the top level test-plan/result, don't include
235-
;; the outer map. When running on an actual testable, do include it.
236-
(:kaocha.testable/id testable)
237-
(cons testable)))
231+
(if (::skip testable)
232+
()
233+
(cond->> (mapcat test-seq (or (:kaocha/tests testable)
234+
(:kaocha.test-plan/tests testable)
235+
(:kaocha.result/tests testable)))
236+
;; When calling test-seq on the top level test-plan/result, don't include
237+
;; the outer map. When running on an actual testable, do include it.
238+
(:kaocha.testable/id testable)
239+
(cons testable))))
238240

239241
(defn test-seq-with-skipped
240-
[testable]
241-
"Create a seq of all tests, including any skipped tests.
242+
"Create a seq of all tests, including any skipped tests.
242243
243-
Typically you want to look at `test-seq` instead."
244-
(cond->> (mapcat test-seq (or (:kaocha/tests testable)
245-
(:kaocha.test-plan/tests testable)
246-
(:kaocha.result/tests testable)))
244+
Typically you want to look at `test-seq` instead."
245+
[testable]
246+
(cond->> (mapcat test-seq-with-skipped (or (:kaocha/tests testable)
247+
(:kaocha.test-plan/tests testable)
248+
(:kaocha.result/tests testable)))
247249
;; When calling test-seq on the top level test-plan/result, don't include
248250
;; the outer map. When running on an actual testable, do include it.
249251
(:kaocha.testable/id testable)

test/unit/kaocha/testable_test.clj

Lines changed: 76 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,80 @@
3434
:kaocha.testable/desc "foo"}
3535
(f/test-plan {})))))
3636

37-
3837
(deftest test-seq-test
39-
(is (= (testable/test-seq
40-
{:kaocha.testable/id :x/_1
41-
:kaocha/tests [{:kaocha.testable/id :y/_1}
42-
{:kaocha.testable/id :z/_1}]})
43-
[{:kaocha.testable/id :x/_1,
44-
:kaocha/tests [#:kaocha.testable{:id :y/_1}
45-
#:kaocha.testable{:id :z/_1}]}
46-
#:kaocha.testable{:id :y/_1}
47-
#:kaocha.testable{:id :z/_1}])))
38+
(testing "no skipped tests"
39+
(is (= (testable/test-seq
40+
{:kaocha.testable/id :x/_1
41+
:kaocha/tests [{:kaocha.testable/id :y/_1}
42+
{:kaocha.testable/id :z/_1}]})
43+
[{:kaocha.testable/id :x/_1,
44+
:kaocha/tests [#:kaocha.testable{:id :y/_1}
45+
#:kaocha.testable{:id :z/_1}]}
46+
#:kaocha.testable{:id :y/_1}
47+
#:kaocha.testable{:id :z/_1}])))
48+
(testing "top level test-plan/result is ignored"
49+
(is (= (testable/test-seq
50+
{:kaocha/tests [{:kaocha.testable/id :y/_1}
51+
{:kaocha.testable/id :z/_1}]})
52+
[#:kaocha.testable{:id :y/_1}
53+
#:kaocha.testable{:id :z/_1}])))
54+
(testing "skipped root testable"
55+
(is (= (testable/test-seq
56+
{:kaocha.testable/id :x/_1
57+
:kaocha.testable/skip true
58+
:kaocha/tests [{:kaocha.testable/id :y/_1}
59+
{:kaocha.testable/id :z/_1}]})
60+
[])))
61+
(testing "skipped nested testable"
62+
(is (= (testable/test-seq
63+
{:kaocha.testable/id :x/_1
64+
:kaocha/tests [{:kaocha.testable/id :y/_1
65+
:kaocha.testable/skip true}
66+
{:kaocha.testable/id :z/_1}]})
67+
[{:kaocha.testable/id :x/_1,
68+
:kaocha/tests [#:kaocha.testable{:id :y/_1
69+
:skip true}
70+
#:kaocha.testable{:id :z/_1}]}
71+
#:kaocha.testable{:id :z/_1}]))))
72+
73+
(deftest test-seq-with-skipped-test
74+
(testing "no skipped tests"
75+
(is (= (testable/test-seq-with-skipped
76+
{:kaocha.testable/id :x/_1
77+
:kaocha/tests [{:kaocha.testable/id :y/_1}
78+
{:kaocha.testable/id :z/_1}]})
79+
[{:kaocha.testable/id :x/_1,
80+
:kaocha/tests [#:kaocha.testable{:id :y/_1}
81+
#:kaocha.testable{:id :z/_1}]}
82+
#:kaocha.testable{:id :y/_1}
83+
#:kaocha.testable{:id :z/_1}])))
84+
(testing "top level test-plan/result is ignored"
85+
(is (= (testable/test-seq-with-skipped
86+
{:kaocha/tests [{:kaocha.testable/id :y/_1}
87+
{:kaocha.testable/id :z/_1}]})
88+
[#:kaocha.testable{:id :y/_1}
89+
#:kaocha.testable{:id :z/_1}])))
90+
(testing "skipped outer testable"
91+
(is (= (testable/test-seq-with-skipped
92+
{:kaocha.testable/id :x/_1
93+
:kaocha.testable/skip true
94+
:kaocha/tests [{:kaocha.testable/id :y/_1}
95+
{:kaocha.testable/id :z/_1}]})
96+
[{:kaocha.testable/id :x/_1,
97+
:kaocha.testable/skip true
98+
:kaocha/tests [#:kaocha.testable{:id :y/_1}
99+
#:kaocha.testable{:id :z/_1}]}
100+
#:kaocha.testable{:id :y/_1}
101+
#:kaocha.testable{:id :z/_1}])))
102+
(testing "skipped nested testable"
103+
(is (= (testable/test-seq-with-skipped
104+
{:kaocha.testable/id :x/_1
105+
:kaocha/tests [{:kaocha.testable/id :y/_1
106+
:kaocha.testable/skip true}
107+
{:kaocha.testable/id :z/_1}]})
108+
[{:kaocha.testable/id :x/_1,
109+
:kaocha/tests
110+
[#:kaocha.testable{:id :y/_1, :skip true}
111+
#:kaocha.testable{:id :z/_1}]}
112+
#:kaocha.testable{:id :y/_1, :skip true}
113+
#:kaocha.testable{:id :z/_1}]))))

0 commit comments

Comments
 (0)