Skip to content

Commit 8e4c10a

Browse files
committed
Simplify regression changes warning mechanism
1 parent 1bf431a commit 8e4c10a

File tree

1 file changed

+35
-34
lines changed

1 file changed

+35
-34
lines changed

test/json_path/test/regression_test.clj

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,44 @@
88
(defn queries_from_suite [suite-yaml]
99
(:queries (yaml/from-file suite-yaml)))
1010

11-
(defn- query-implementation [{:keys [selector document ordered]}]
11+
(defn- query-implementation-for [{:keys [selector document ordered]}]
1212
(let [current (json-path/at-path selector document)]
1313
(if (= ordered false)
1414
(sort-by json/write-str current)
1515
current)))
1616

17+
(defn- expected-by-consensus [query]
18+
(if (contains? query :scalar-consensus)
19+
(:scalar-consensus query)
20+
(:consensus query)))
21+
1722
(deftest regression
1823
(let [non-consensus-query-ids (->> (queries_from_suite "test/Clojure_json-path.yaml")
1924
(map :id)
2025
set)]
2126
(->> (queries_from_suite "test/consensus.yaml")
2227
(remove (fn [{id :id}] (contains? non-consensus-query-ids id)))
23-
(map (fn [{:keys [id selector document ordered] :as query}]
24-
(let [expected (if (contains? query :scalar-consensus)
25-
(:scalar-consensus query)
26-
(:consensus query))]
27-
(testing id
28-
(is (= expected
29-
(query-implementation query)))))))
28+
(map (fn [{:keys [id] :as query}]
29+
(testing id
30+
(is (= (expected-by-consensus query)
31+
(query-implementation-for query))))))
3032
doall)))
3133

32-
(defn- report-change [current-reordered status result {:keys [selector document consensus id]}]
34+
(defn- report-result [current-result current-exception previous {:keys [id selector] :as query}]
3335
(println
3436
(format "Warning: implementation has changed for %s: %s (previous status %s)"
35-
id selector status))
36-
(when (or (nil? consensus)
37-
(not= consensus current-reordered))
38-
(when-not (= status "error")
39-
(println (format " was %s" (pr-str result))))
40-
(println (format " now is %s" (pr-str current-reordered))))
41-
(when-not (nil? consensus)
42-
(if (= consensus
43-
current-reordered)
44-
(println " now matching consensus")
45-
(println (format " but should be %s" (pr-str consensus))))))
37+
id selector (:status previous)))
38+
(println "Old:")
39+
(if (= (:status previous) "error")
40+
(println " Error")
41+
(println (format" %s" (pr-str (:result previous)))))
42+
(println "New:")
43+
(if (some? current-exception)
44+
(println " Error")
45+
(println (format" %s" (pr-str current-result))))
46+
(when-let [consensus (expected-by-consensus query)]
47+
(println "Consensus:")
48+
(println (format" %s" (pr-str consensus)))))
4649
4750
;; This section is for warning us if we are moving away from previously
4851
;; recorded results which however are not backed by a consensus based
@@ -52,18 +55,16 @@
5255
query-lookup (zipmap (map :id all-queries)
5356
all-queries)]
5457
(->> (queries_from_suite "test/Clojure_json-path.yaml")
55-
(map (fn [{:keys [id status result]}]
56-
(let [query (get query-lookup id)]
57-
(testing id
58-
(try
59-
(let [current (query-implementation query)]
60-
(when (or (= "error" status)
61-
(not= result current))
62-
(report-change current status result query)))
63-
(catch Exception e
64-
(when (not= "error"
65-
status)
66-
(do
67-
(println (format "Warning: implementation has changed to error for %s: %s (status %s)" id (:selector query) status))
68-
(println (format " was %s" (pr-str result)))))))))))
58+
(map (fn [{:keys [id status result] :as previous}]
59+
(let [query (get query-lookup id)]
60+
(testing id
61+
(try
62+
(let [current-result (query-implementation-for query)]
63+
(when (or (= "error" status)
64+
(not= result current-result))
65+
(report-result current-result nil previous query)))
66+
(catch Exception e
67+
(when (not= "error"
68+
status)
69+
(report-result nil e previous query))))))))
6970
doall)))

0 commit comments

Comments
 (0)