From 7feb5aabe6e71ad6e65c72ca3cc977541c0991c4 Mon Sep 17 00:00:00 2001 From: Andrey Listopadov Date: Tue, 16 Feb 2021 10:03:44 +0300 Subject: fix(tests): fix test macros to correctly report errors runtime errors captured via pcall --- tests/core.fnl | 1 + tests/test.fnl | 46 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/tests/core.fnl b/tests/core.fnl index 0220c06..fe14670 100644 --- a/tests/core.fnl +++ b/tests/core.fnl @@ -790,6 +790,7 @@ (testing "sets into tables" (assert-eq (into [] (core.ordered-set 1 2 3)) [1 2 3]) + (assert-eq (into [] (core.ordered-set :a :b :c)) [:a :b :c]) (assert-eq (into {} (core.ordered-set [:a 1] [:b 2])) {:a 1 :b 2}))) (deftest memoization diff --git a/tests/test.fnl b/tests/test.fnl index 43247d9..329f828 100644 --- a/tests/test.fnl +++ b/tests/test.fnl @@ -59,12 +59,16 @@ Deep compare values: `(let [left# ,expr1 right# ,expr2 eq# ,(eq-fn) - fennel# (require :fennel)] - (assert (pick-values 1 (pcall #(do eq# left# right#))) - (or ,msg (.. "assertion failed for expression: + fennel# (require :fennel) + (suc# res#) (pcall eq# left# right#)] + (if suc# + (assert res# (or ,msg (.. "assertion failed for expression: (= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") Left: " (fennel#.view left# {:one-line? true}) " - Right: " (fennel#.view right# {:one-line? true}) "\n"))))) + Right: " (fennel#.view right# {:one-line? true}) "\n"))) + (error (.. "in expression: +(= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") + " res#" \n"))))) (fn test.assert-ne [expr1 expr2 msg] @@ -74,12 +78,16 @@ Deep compare values: `(let [left# ,expr1 right# ,expr2 eq# ,(eq-fn) - fennel# (require :fennel)] - (assert (pick-values 1 (pcall #(not (eq# left# right#)))) - (or ,msg (.. "assertion failed for expression: + fennel# (require :fennel) + (suc# res#) (pcall eq# left# right#)] + (if suc# + (assert (not res#) (or ,msg (.. "assertion failed for expression: (not= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") Left: " (fennel#.view left# {:one-line? true}) " - Right: " (fennel#.view right# {:one-line? true}) "\n"))))) + Right: " (fennel#.view right# {:one-line? true}) "\n"))) + (error (.. "in expression: +(not= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") + " res#" \n"))))) (fn test.assert-is [expr msg] @@ -90,17 +98,27 @@ Deep compare values: ;; (assert-is (= 1 2 3)) ;; => runtime error: assertion failed for (= 1 2 3) ```" - `(assert (pick-values 1 (pcall #(do ,expr))) - (.. "assertion failed: " - (or ,msg ,(view expr {:one-line? true}))))) + `(let [(suc# res#) (pcall #(do ,expr))] + (if suc# + (assert res# + (.. "assertion failed: " + (or ,msg ,(view expr {:one-line? true})))) + (error (.. "in expression: " + ,(view expr {:one-line? true}) " + " res#" \n"))))) (fn test.assert-not [expr msg] "Assert `expr` for not truth. Generates more verbose message if `msg` is not set. Works the same as [`assert-is`](#assert-is)." - `(assert (pick-values 1 (pcall #(not ,expr))) - (.. "assertion failed: " - (or ,msg ,(view expr {:one-line? true}))))) + `(let [(suc# res#) (pcall #(not ,expr))] + (if suc# + (assert res# + (.. "assertion failed: " + (or ,msg ,(view expr {:one-line? true})))) + (error (.. "in expression: " + ,(view expr {:one-line? true}) " + " res#" \n"))))) (fn test.deftest [name ...] -- cgit v1.2.3