Skip to content

Commit b27dc9e

Browse files
committed
feat: add coverage test to verify coverage works
1 parent 07e0892 commit b27dc9e

File tree

6 files changed

+63
-2
lines changed

6 files changed

+63
-2
lines changed

.github/workflows/clojure.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ jobs:
2525
cli: 1.11.1.1429
2626
- name: Run tests
2727
run: make test
28+
- name: Run coverage tests
29+
run: make test-coverage
2830
- name: Run generative tests
2931
run: make test-generative
3032
- name: Run clj-kondo linter

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ repl: compile-test-java
1414
test: compile-test-java
1515
clojure -M:dev:test:runner --focus :unit --reporter kaocha.report/documentation --no-capture-output
1616

17+
test-coverage: compile-test-java
18+
clojure -M:dev:test:runner --focus :coverage --reporter kaocha.report/documentation --no-capture-output
19+
jq '.coverage["clara/coverage_ruleset.clj"]|join("_")' target/coverage/codecov.json | grep "_1___1____1_0_1__1__" || echo "Unexpected coverage output for clara.coverage-ruleset." exit 1
20+
1721
test-generative: compile-test-java
1822
clojure -M:dev:test:runner --focus :generative --reporter kaocha.report/documentation --no-capture-output
1923

deps.edn

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
:main-opts ["-m" "clj-kondo.main"]}
2525

2626
:test {:extra-paths ["src/test/clojure" "target/test/classes"]
27-
:extra-deps {lambdaisland/kaocha {:mvn/version "1.80.1274"}
27+
:extra-deps {lambdaisland/kaocha {:mvn/version "1.80.1274"}
28+
lambdaisland/kaocha-junit-xml {:mvn/version "1.17.101"}
29+
lambdaisland/kaocha-cloverage {:mvn/version "1.1.89"}
2830
org.clojure/test.check {:mvn/version "1.1.1"}
2931
pjstadig/humane-test-output {:mvn/version "0.10.0"}}}
3032

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
(ns clara.coverage-ruleset
2+
(:require [clara.rules :refer [defrule defquery insert!]]))
3+
4+
(defrule simple-rule-with-rhs
5+
[:weather [{:keys [temperature]}]
6+
(= temperature ?temperature)]
7+
=>
8+
(if (< ?temperature 50)
9+
(insert! {:type :climate :label "Cold"})
10+
(insert! {:type :climate :label "Warm"})))
11+
12+
(defquery climate-query
13+
[]
14+
[?result <- :climate])
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
(ns ^:coverage clara.test-coverage
2+
(:require [clojure.test :refer [deftest testing is]]
3+
[clara.rules :refer [mk-session insert fire-rules query]]
4+
[clara.coverage-ruleset]))
5+
6+
(deftest test-coverage
7+
(testing "run the rules"
8+
(let [result (-> (mk-session 'clara.coverage-ruleset :fact-type-fn :type)
9+
(insert {:type :weather
10+
:temperature 75})
11+
(fire-rules)
12+
(query clara.coverage-ruleset/climate-query))]
13+
(is (= result [{:?result {:type :climate
14+
:label "Warm"}}])))))

tests.edn

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,40 @@
33
:plugins [:kaocha.plugin/profiling
44
:kaocha.plugin/gc-profiling
55
:kaocha.plugin/print-invocations
6+
:kaocha.plugin/junit-xml
7+
:kaocha.plugin/cloverage
68
:kaocha.plugin/hooks
79
:preloads]
10+
:kaocha.plugin.junit-xml/target-file "target/junit.xml"
11+
:kaocha.plugin.junit-xml/add-location-metadata? true
12+
:cloverage/opts {:ns-exclude-regex []
13+
:text? false
14+
:lcov? false
15+
:high-watermark 80
16+
:fail-threshold 0
17+
:output "target/coverage"
18+
:low-watermark 50
19+
:src-ns-path ["src/main/clojure"
20+
"src/test/clojure"]
21+
:ns-regex ["clara.coverage-ruleset"]
22+
:summary? true
23+
:coveralls? false
24+
:emma-xml? false
25+
:html? true
26+
:nop? false
27+
:codecov? true}
828
:kaocha.hooks/pre-report [clara.test-setup/defuse-zero-assertions]
929
:kaocha.plugin.preloads/ns-names [clara.test-setup]
1030
:tests [{:id :unit
1131
:kaocha/source-paths ["src/main/clojure"]
1232
:kaocha/test-paths ["src/test/clojure"]
1333
:ns-patterns [".*"]
14-
:skip-meta [:generative]}
34+
:skip-meta [:generative :coverage]}
35+
{:id :coverage
36+
:kaocha/source-paths ["src/main/clojure"]
37+
:kaocha/test-paths ["src/test/clojure"]
38+
:ns-patterns [".*"]
39+
:focus-meta [:coverage]}
1540
{:id :generative
1641
:kaocha/source-paths ["src/main/clojure"]
1742
:kaocha/test-paths ["src/test/clojure"]

0 commit comments

Comments
 (0)