|
2 | 2 | (:require [clojure.test :refer :all] |
3 | 3 | [eftest.runner :as sut])) |
4 | 4 |
|
5 | | -(in-ns 'eftest.test-ns.single-failing-test) |
| 5 | +(def tests-completed |
| 6 | + (atom [])) |
| 7 | + |
| 8 | +;; Example test namespaces have a prefix such as ns-0 so that they can be |
| 9 | +;; deterministically sorted. |
| 10 | + |
| 11 | +(in-ns 'eftest.test-ns-0.throwing-test) |
| 12 | +(clojure.core/refer-clojure) |
| 13 | +(clojure.core/require 'clojure.test) |
| 14 | +(clojure.test/deftest throwing-test |
| 15 | + (swap! eftest.runner-test/tests-completed conj :throwing-test) |
| 16 | + (throw (ex-info "." {}))) |
| 17 | + |
| 18 | +(in-ns 'eftest.test-ns-1.throwing-test-in-fixtures) |
| 19 | +(clojure.core/refer-clojure) |
| 20 | +(clojure.core/require 'clojure.test) |
| 21 | +(clojure.test/use-fixtures :once |
| 22 | + (fn [t] |
| 23 | + (swap! eftest.runner-test/tests-completed conj :throwing-test-in-fixtures) |
| 24 | + (throw (ex-info "." {})) |
| 25 | + (t))) |
| 26 | +(clojure.test/deftest example-test |
| 27 | + (clojure.test/is (= 1 1))) |
| 28 | + |
| 29 | +(in-ns 'eftest.test-ns-2.single-failing-test) |
6 | 30 | (clojure.core/refer-clojure) |
7 | 31 | (clojure.core/require 'clojure.test) |
8 | 32 | (clojure.test/deftest single-failing-test |
| 33 | + (swap! eftest.runner-test/tests-completed conj :single-failing-test) |
9 | 34 | (clojure.test/is (= 1 2))) |
10 | 35 |
|
11 | | -(in-ns 'eftest.test-ns.another-failing-test) |
| 36 | +(in-ns 'eftest.test-ns-3.another-failing-test) |
12 | 37 | (clojure.core/refer-clojure) |
13 | 38 | (clojure.core/require 'clojure.test) |
14 | 39 | (clojure.test/deftest another-failing-test |
| 40 | + (swap! eftest.runner-test/tests-completed conj :another-failing-test) |
15 | 41 | (clojure.test/is (= 3 4))) |
16 | 42 |
|
17 | 43 | (in-ns 'eftest.test-ns.slow-test) |
|
44 | 70 | :return @ret}))) |
45 | 71 |
|
46 | 72 | (deftest test-reporting |
47 | | - (let [out (:output (test-run-tests 'eftest.test-ns.single-failing-test))] |
48 | | - (is (re-find #"FAIL in eftest.test-ns.single-failing-test/single-failing-test" out)) |
| 73 | + (let [out (:output (test-run-tests 'eftest.test-ns-2.single-failing-test))] |
| 74 | + (is (re-find #"FAIL in eftest.test-ns-2.single-failing-test/single-failing-test" out)) |
49 | 75 | (is (not (re-find #"IllegalArgumentException" out))))) |
50 | 76 |
|
51 | 77 | (deftest test-fail-fast |
52 | | - (let [result (:return |
53 | | - (test-run-tests |
54 | | - '[eftest.test-ns.single-failing-test |
55 | | - eftest.test-ns.another-failing-test] |
56 | | - {:fail-fast? true, :multithread? false}))] |
57 | | - (is (= {:test 1 :fail 1} (select-keys result [:test :fail]))))) |
| 78 | + (let [run! (fn [nses opts] |
| 79 | + (reset! tests-completed []) |
| 80 | + (-> nses |
| 81 | + (test-run-tests (merge {:multithread? false} opts)) |
| 82 | + :return |
| 83 | + (select-keys [:test :fail :error])))] |
| 84 | + |
| 85 | + (testing "Failing tests" |
| 86 | + (let [result (run! '[eftest.test-ns-2.single-failing-test |
| 87 | + eftest.test-ns-3.another-failing-test] |
| 88 | + {:fail-fast? true})] |
| 89 | + (is (= {:test 1 :fail 1 :error 0} result)) |
| 90 | + (is (= [:single-failing-test] |
| 91 | + @tests-completed))) |
| 92 | + |
| 93 | + (let [result (run! '[eftest.test-ns-2.single-failing-test |
| 94 | + eftest.test-ns-3.another-failing-test] |
| 95 | + {:fail-fast? false})] |
| 96 | + (is (= {:test 2 :fail 2 :error 0} result)) |
| 97 | + (is (= [:single-failing-test :another-failing-test] |
| 98 | + @tests-completed)))) |
| 99 | + |
| 100 | + (testing "Exceptions in tests" |
| 101 | + (let [result (run! '[eftest.test-ns-0.throwing-test |
| 102 | + eftest.test-ns-2.single-failing-test] |
| 103 | + {:fail-fast? true})] |
| 104 | + (is (= {:test 1 :fail 0 :error 1} result)) |
| 105 | + (is (= [:throwing-test] |
| 106 | + @tests-completed))) |
| 107 | + |
| 108 | + (let [result (run! '[eftest.test-ns-0.throwing-test |
| 109 | + eftest.test-ns-2.single-failing-test] |
| 110 | + {:fail-fast? false})] |
| 111 | + (is (= {:test 2 :fail 1 :error 1} result)) |
| 112 | + (is (= [:throwing-test |
| 113 | + :single-failing-test] |
| 114 | + @tests-completed)))) |
| 115 | + |
| 116 | + (testing "Exceptions in fixtures" |
| 117 | + (let [result (run! '[eftest.test-ns-1.throwing-test-in-fixtures |
| 118 | + eftest.test-ns-2.single-failing-test] |
| 119 | + {:fail-fast? true})] |
| 120 | + (is (= {:test 0 :fail 0 :error 1} result)) |
| 121 | + (is (= [:throwing-test-in-fixtures] |
| 122 | + @tests-completed))) |
| 123 | + |
| 124 | + (let [result (run! '[eftest.test-ns-1.throwing-test-in-fixtures |
| 125 | + eftest.test-ns-2.single-failing-test] |
| 126 | + {:fail-fast? false})] |
| 127 | + (is (= {:test 1 :fail 1 :error 1} result)) |
| 128 | + (is (= [:throwing-test-in-fixtures |
| 129 | + :single-failing-test] |
| 130 | + @tests-completed)))))) |
58 | 131 |
|
59 | 132 | (deftest test-fail-multi |
60 | 133 | (let [out (:output |
61 | 134 | (test-run-tests |
62 | | - '[eftest.test-ns.single-failing-test |
63 | | - eftest.test-ns.another-failing-test]))] |
| 135 | + '[eftest.test-ns-2.single-failing-test |
| 136 | + eftest.test-ns-3.another-failing-test]))] |
64 | 137 | (println out) |
65 | 138 | (is (re-find #"(?m)expected: 1\n actual: 2" out)) |
66 | 139 | (is (re-find #"(?m)expected: 3\n actual: 4" out)))) |
|
0 commit comments