From c485e98d4f20fe02dbd9cdcf6923ee611e0dd5c7 Mon Sep 17 00:00:00 2001 From: Riley Thompson Date: Tue, 16 Jun 2026 17:14:02 -0400 Subject: [PATCH 1/3] only calculate diff if key was present --- .gitignore | 2 ++ src/mb/hawk/assert_exprs/approximately_equal.clj | 5 +++-- .../assert_exprs/approximately_equal_test.clj | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8dd4909..c018b66 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ pom.xml pom.xml.asc # malli + clj-kondo: ignore malli-types .clj-kondo/metosin/malli-types-clj +.calva/ +.DS_STORE diff --git a/src/mb/hawk/assert_exprs/approximately_equal.clj b/src/mb/hawk/assert_exprs/approximately_equal.clj index e45c3cd..31e2e7e 100644 --- a/src/mb/hawk/assert_exprs/approximately_equal.clj +++ b/src/mb/hawk/assert_exprs/approximately_equal.clj @@ -108,8 +108,9 @@ (methodical/defmethod =?-diff [clojure.lang.IPersistentMap clojure.lang.IPersistentMap] [expected-map actual-map] (not-empty (into {} (for [[k expected] expected-map - :let [actual (get actual-map k (symbol "nil #_\"key is not present.\"")) - diff (=?-diff expected actual)] + :let [diff (if (contains? actual-map k) + (=?-diff expected (get actual-map k)) + (symbol "nil #_\"key is not present.\""))] :when diff] [k diff])))) diff --git a/test/mb/hawk/assert_exprs/approximately_equal_test.clj b/test/mb/hawk/assert_exprs/approximately_equal_test.clj index 3a1e62c..0809266 100644 --- a/test/mb/hawk/assert_exprs/approximately_equal_test.clj +++ b/test/mb/hawk/assert_exprs/approximately_equal_test.clj @@ -35,6 +35,22 @@ (is (=? {:a 100} {:a 100, :b 200}))))) +(deftest ^:parallel missing-key-test + (testing "A key in expected and missing in actual should always fail" + (is (= {:k (symbol "nil #_\"key is not present.\"")} + (=?/=?-diff {:k some?} {}))) + (is (= {:k (symbol "nil #_\"key is not present.\"")} + (=?/=?-diff {:k any?} {}))) + (is (= {:k (symbol "nil #_\"key is not present.\"")} + (=?/=?-diff {:k nil?} {}))) + (is (= {:k (symbol "nil #_\"key is not present.\"")} + (=?/=?-diff {:k 1} {}))) + (is (= {:a {:k (symbol "nil #_\"key is not present.\"")}} + (=?/=?-diff {:a {:k some?}} {:a {}}))) + (is (=? {:k some?} + {:k 1})) + (is (nil? (=?/=?-diff {:k nil?} {:k nil}))))) + (deftest ^:parallel sequences-test (is (=? [] [])) From 8717771ae0f36b5b7090e7e9ec09d3cd32469757 Mon Sep 17 00:00:00 2001 From: Riley Thompson Date: Tue, 16 Jun 2026 17:19:47 -0400 Subject: [PATCH 2/3] more explicit names --- src/mb/hawk/assert_exprs/approximately_equal.clj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mb/hawk/assert_exprs/approximately_equal.clj b/src/mb/hawk/assert_exprs/approximately_equal.clj index 31e2e7e..4ee13b4 100644 --- a/src/mb/hawk/assert_exprs/approximately_equal.clj +++ b/src/mb/hawk/assert_exprs/approximately_equal.clj @@ -107,12 +107,12 @@ (methodical/defmethod =?-diff [clojure.lang.IPersistentMap clojure.lang.IPersistentMap] [expected-map actual-map] - (not-empty (into {} (for [[k expected] expected-map - :let [diff (if (contains? actual-map k) - (=?-diff expected (get actual-map k)) - (symbol "nil #_\"key is not present.\""))] - :when diff] - [k diff])))) + (not-empty (into {} (for [[expected-key expected-val] expected-map + :let [diff (if (contains? actual-map expected-key) + (=?-diff expected-val (get actual-map expected-key)) + (symbol "nil #_\"key is not present.\""))] + :when diff] + [expected-key diff])))) (deftype Exactly [expected]) From d52d1b96f16cd2346f410591ce84a9247ec7bc97 Mon Sep 17 00:00:00 2001 From: Riley Thompson Date: Tue, 16 Jun 2026 17:23:45 -0400 Subject: [PATCH 3/3] use are for repeated tests --- .../hawk/assert_exprs/approximately_equal_test.clj | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/test/mb/hawk/assert_exprs/approximately_equal_test.clj b/test/mb/hawk/assert_exprs/approximately_equal_test.clj index 0809266..63b3579 100644 --- a/test/mb/hawk/assert_exprs/approximately_equal_test.clj +++ b/test/mb/hawk/assert_exprs/approximately_equal_test.clj @@ -37,18 +37,12 @@ (deftest ^:parallel missing-key-test (testing "A key in expected and missing in actual should always fail" - (is (= {:k (symbol "nil #_\"key is not present.\"")} - (=?/=?-diff {:k some?} {}))) - (is (= {:k (symbol "nil #_\"key is not present.\"")} - (=?/=?-diff {:k any?} {}))) - (is (= {:k (symbol "nil #_\"key is not present.\"")} - (=?/=?-diff {:k nil?} {}))) - (is (= {:k (symbol "nil #_\"key is not present.\"")} - (=?/=?-diff {:k 1} {}))) + (are [expected-val] (= {:k (symbol "nil #_\"key is not present.\"")} + (=?/=?-diff {:k expected-val} {})) + some? any? nil? 1) (is (= {:a {:k (symbol "nil #_\"key is not present.\"")}} (=?/=?-diff {:a {:k some?}} {:a {}}))) - (is (=? {:k some?} - {:k 1})) + (is (=? {:k some?} {:k 1})) (is (nil? (=?/=?-diff {:k nil?} {:k nil}))))) (deftest ^:parallel sequences-test