diff --git a/projects/main/src/taoensso/telemere/impl.cljc b/projects/main/src/taoensso/telemere/impl.cljc index 9eb62c7..61c7225 100644 --- a/projects/main/src/taoensso/telemere/impl.cljc +++ b/projects/main/src/taoensso/telemere/impl.cljc @@ -574,6 +574,7 @@ clj? (not cljs?) {run-form :run} opts + show-run-val (get opts :run-val '_run-val) show-run-form (when run-form (get opts :run-form @@ -653,8 +654,8 @@ (dissoc opts :elidable? :location :location* :inst :uid :middleware :middleware+, :sample-rate :ns :kind :id :level :filter :when #_:rate-limit #_:rate-limit-by, - :ctx :ctx+ :parent #_:trace?, :do :let :data :msg :error :run, - :elide? :allow? #_:expansion-id :otel/context)) + :ctx :ctx+ :parent #_:trace?, :do :let :data :msg :error, + :run :run-form :run-val, :elide? :allow? #_:expansion-id :otel/context)) _ ; Compile-time validation (do @@ -675,10 +676,10 @@ (let [record-form (let [clause [(if run-form :run :no-run) (if clj? :clj :cljs)]] (case clause - [:run :clj ] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, (enc/host-info) ~'__thread ~'__otel-context1, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~'_msg_, ~'_run-err '~show-run-form ~'_run-val ~'_end-inst ~'_run-nsecs) - [:run :cljs] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~'_msg_, ~'_run-err '~show-run-form ~'_run-val ~'_end-inst ~'_run-nsecs) - [:no-run :clj ] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, (enc/host-info) ~'__thread ~'__otel-context1, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~msg-form, ~error-form nil nil nil nil) - [:no-run :cljs] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~msg-form, ~error-form nil nil nil nil) + [:run :clj ] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, (enc/host-info) ~'__thread ~'__otel-context1, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~'_msg_, ~'_run-err '~show-run-form ~show-run-val ~'_end-inst ~'_run-nsecs) + [:run :cljs] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~'_msg_, ~'_run-err '~show-run-form ~show-run-val ~'_end-inst ~'_run-nsecs) + [:no-run :clj ] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, (enc/host-info) ~'__thread ~'__otel-context1, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~msg-form, ~error-form nil nil nil nil) + [:no-run :cljs] `(Signal. 1 ~'__inst ~'__uid, ~location ~'__ns ~line-form ~column-form ~file-form, ~sample-rate-form, ~'__kind ~'__id ~'__level, ~ctx-form ~parent-form ~'__root1, ~data-form ~kvs-form ~msg-form, ~error-form nil nil nil nil) (enc/unexpected-arg! clause {:context :signal-constructor-args}))) record-form @@ -692,7 +693,7 @@ ~'_msg_ (let [mf# ~msg-form] (if (fn? mf#) ; Undocumented, handy for `trace!`/`spy!`, etc. - (delay (mf# '~show-run-form ~'_run-val ~'_run-err ~'_run-nsecs)) + (delay (mf# '~show-run-form ~show-run-val ~'_run-err ~'_run-nsecs)) mf#))] ~record-form))] diff --git a/projects/main/test/taoensso/telemere_tests.cljc b/projects/main/test/taoensso/telemere_tests.cljc index a368451..fbef8cd 100644 --- a/projects/main/test/taoensso/telemere_tests.cljc +++ b/projects/main/test/taoensso/telemere_tests.cljc @@ -640,11 +640,15 @@ (is (sm? sv2 {:kind :error, :line :submap/some, :level :error, :id :id2})) (is (= (:location sv1) (:location sv2)) "Error inherits exact same location")]) - (testing ":run-form" - [(is (= (:run-form (with-sig (tel/trace! :non-list))) :non-list)) - (is (= (:run-form (with-sig (tel/trace! (+ 1 2 3 4)))) '(+ 1 2 3 4))) - (is (= (:run-form (with-sig (tel/trace! (+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)))) '(+ ...))) - (is (= (:run-form (with-sig (tel/trace! {:run-form 'my-run-form} (+ 1 2 3 4)))) 'my-run-form))])]) + (testing ":run-form" ; Undocumented, experimental + [(is (sm? (with-sig (tel/trace! :non-list)) {:run-form :non-list})) + (is (sm? (with-sig (tel/trace! (+ 1 2 3 4))) {:run-form '(+ 1 2 3 4)})) + (is (sm? (with-sig (tel/trace! (+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16))) {:run-form '(+ ...)})) + (is (sm? (with-sig (tel/trace! {:run-form my-run-form} (+ 1 2 3 4))) {:run-form 'my-run-form :kvs nil}))]) + + (testing ":run-val" ; Undocumented, experimental + [(is (sm? (with-sig (tel/trace! (+ 2 2))) {:run-val 4, :msg_ "(+ 2 2) => 4"})) + (is (sm? (with-sig (tel/trace! {:run-val "custom"} (+ 2 2))) {:run-val "custom", :msg_ "(+ 2 2) => custom", :kvs nil}))])]) (testing "spy" ; run + ?level => run result (value or throw) [(let [[[rv] [sv]] (with-sigs (tel/spy! (+ 1 2)))] [(is (= rv 3)) (is (sm? sv {:kind :spy, :line :submap/some, :level :info, :msg_ "(+ 1 2) => 3"}))])