From 213c6470a7a3a9d2eadd5a59e902083b758676f1 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Tue, 7 May 2024 13:42:16 +0200 Subject: [PATCH] [fix] [#6] Missing root stack trace Thanks to @FieryCod for the report! --- src/taoensso/telemere/utils.cljc | 6 +++--- test/taoensso/telemere_tests.cljc | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/taoensso/telemere/utils.cljc b/src/taoensso/telemere/utils.cljc index bfd8bd5..38373b2 100644 --- a/src/taoensso/telemere/utils.cljc +++ b/src/taoensso/telemere/utils.cljc @@ -416,7 +416,7 @@ s+nl (enc/sb-appender sb enc/newline)] (doseq [st-el (force trace)] (let [{:keys [class method file line]} st-el] - (s+nl class "/" method " at " file ":" line))) + (s+nl " " class "/" method " at " file ":" line))) (str sb)))) (comment (println (format-clj-stacktrace (:trace (enc/ex-map (ex-info "Ex2" {:k2 "v2"} (ex-info "Ex1" {:k1 "v1"}))))))) @@ -446,8 +446,8 @@ (when trace (s+ nl nl "Root stack trace:" nl) - #?(:cljs (s+ trace) - :clj (format-clj-stacktrace trace))) + #?(:cljs (s+ trace) + :clj (s+ (format-clj-stacktrace trace)))) (str sb))))))) diff --git a/test/taoensso/telemere_tests.cljc b/test/taoensso/telemere_tests.cljc index a99dd4c..3cfc880 100644 --- a/test/taoensso/telemere_tests.cljc +++ b/test/taoensso/telemere_tests.cljc @@ -670,9 +670,14 @@ (is (= ((utils/format-nsecs-fn) 1.5e9) "1.50s")) ; More tests in Encore (is (= ((utils/format-inst-fn) t0) "2024-06-09T21:15:20.170Z")) - (is (enc/str-starts-with? ((utils/format-error-fn) ex2) - #?(:clj " Root: clojure.lang.ExceptionInfo - Ex1\n data: {:k1 \"v1\"}\n\nCaused: clojure.lang.ExceptionInfo - Ex2\n data: {:k2 \"v2\"}\n\nRoot stack trace:\n" - :cljs " Root: cljs.core/ExceptionInfo - Ex1\n data: {:k1 \"v1\"}\n\nCaused: cljs.core/ExceptionInfo - Ex2\n data: {:k2 \"v2\"}\n\nRoot stack trace:\n"))) + (testing "format-error-fn" + (let [ex2-str ((utils/format-error-fn) ex2)] + [(is (enc/str-starts-with? ex2-str + #?(:clj " Root: clojure.lang.ExceptionInfo - Ex1\n data: {:k1 \"v1\"}\n\nCaused: clojure.lang.ExceptionInfo - Ex2\n data: {:k2 \"v2\"}\n\nRoot stack trace:\n" + :cljs " Root: cljs.core/ExceptionInfo - Ex1\n data: {:k1 \"v1\"}\n\nCaused: cljs.core/ExceptionInfo - Ex2\n data: {:k2 \"v2\"}\n\nRoot stack trace:\n"))) + + (is (enc/str-contains? ex2-str "Root stack trace:")) + (is (enc/str-contains? ex2-str "invoke") "Root stack trace includes content")])) (testing "signal-preamble-fn" (let [sig (with-sig (tel/event! ::ev-id {:inst t0}))