diff --git a/main/src/taoensso/telemere/impl.cljc b/main/src/taoensso/telemere/impl.cljc index 6d309af..1315533 100644 --- a/main/src/taoensso/telemere/impl.cljc +++ b/main/src/taoensso/telemere/impl.cljc @@ -253,28 +253,19 @@ sample, kind id level, ctx parent root, data kvs msg_, error run-form run-val end-inst run-nsecs] - Object (toString [sig] (str "taoensso.telemere.Signal" (into {} sig)))) + Object (toString [sig] (str "taoensso.telemere.Signal" (enc/pr-edn* (into {} sig))))) -;; NB intentionally verbose constructors for readability, to support extra keys -(do (enc/def-print-impl [sig Signal] (str "#taoensso.telemere.Signal" (pr-str (into {} sig))))) -#?(:clj (enc/def-print-dup [sig Signal] (str "#taoensso.telemere.impl.Signal" (pr-str (into {} sig))))) +;; Verbose constructors for readability + to support extra keys +(do (enc/def-print-impl [sig Signal] (str "#taoensso.telemere.Signal" (enc/pr-edn* (into {} sig))))) +#?(:clj (enc/def-print-dup [sig Signal] (str "#taoensso.telemere.impl.Signal" (enc/pr-edn* (into {} sig))))) + +(defn signal? #?(:cljs {:tag 'boolean}) [x] (instance? Signal x)) (def impl-signal-keys #{:_otel-context}) (def standard-signal-keys (set/difference (set (keys (map->Signal {:schema 0}))) impl-signal-keys)) -(comment - (def s1 (with-signal (signal! {:level :info, :my-k1 :my-v1}))) - (read-string (str (assoc s1 :my-k2 :my-v2))) - (read-string (pr-str (assoc s1 :my-k2 :my-v2))) - (read-string (binding [*print-dup* true] (pr-str (assoc s1 :my-k2 :my-v2)))) - - (defrecord MyRec [x]) - (read-string ; Non-verbose will fail on any extra keys - (binding [*print-dup* true, *verbose-defrecords* false] - (pr-str (assoc (MyRec. :x) :y :y))))) - (deftype #_defrecord WrappedSignal [kind ns id level signal-value_] sigs/ISignalHandling diff --git a/main/test/taoensso/telemere_tests.cljc b/main/test/taoensso/telemere_tests.cljc index 622918b..9af8533 100644 --- a/main/test/taoensso/telemere_tests.cljc +++ b/main/test/taoensso/telemere_tests.cljc @@ -281,15 +281,20 @@ (with-sig (sig! {:level :info, :xfn+ #(assoc % :bar true)})))] (is (sm? sv {:foo true, :bar true})))])]) - #?(:clj - (testing "Printing" - (let [sv1 (dissoc (with-sig (sig! {:level :info, :run (+ 1 2), :my-k1 :my-v1})) :_otel-context) - sv1 ; Ensure instants are printable - (-> sv1 - (update-in [:inst] enc/inst->udt) - (update-in [:end-inst] enc/inst->udt))] + (testing "Printing" + [#?(:clj (is (impl/signal? (read-string (binding [*print-dup* true] (pr-str (impl/map->Signal {}))))))) + #?(:clj (is (impl/signal? (read-string (binding [*print-dup* true] (pr-str (assoc (impl/map->Signal {}) :k :v))))))) + (is (enc/str-starts-with? (binding [*print-dup* true] (str (assoc (impl/map->Signal {}) :k :v))) "taoensso.telemere.Signal{")) + (is (enc/str-starts-with? (pr-str (assoc (impl/map->Signal {}) :k :v)) "#taoensso.telemere.Signal{")) + (is (enc/str-starts-with? (str (assoc (impl/map->Signal {}) :k :v)) "taoensso.telemere.Signal{")) - [(is (= sv1 (read-string (pr-str sv1))))])))]) + #?(:clj + (let [sv1 (dissoc (with-sig (sig! {:level :info, :run (+ 1 2), :my-k1 :my-v1})) :_otel-context) + sv1 ; Ensure instants are printable + (-> sv1 + (update-in [:inst] enc/inst->udt) + (update-in [:end-inst] enc/inst->udt))] + (is (= sv1 (read-string (pr-str sv1))) "Equality holds")))])]) (deftest _handlers ;; Basic handler tests are in Encore