[nop] Use pr-edn* for Signal strings

This commit is contained in:
Peter Taoussanis 2025-04-16 12:33:35 +02:00
parent 254cd6471b
commit e8f02ac13e
2 changed files with 19 additions and 23 deletions

View file

@ -253,28 +253,19 @@
sample, kind id level, ctx parent root, data kvs msg_, sample, kind id level, ctx parent root, data kvs msg_,
error run-form run-val end-inst run-nsecs] 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 ;; Verbose constructors for readability + to support extra keys
(do (enc/def-print-impl [sig Signal] (str "#taoensso.telemere.Signal" (pr-str (into {} sig))))) (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" (pr-str (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 impl-signal-keys #{:_otel-context})
(def standard-signal-keys (def standard-signal-keys
(set/difference (set (keys (map->Signal {:schema 0}))) (set/difference (set (keys (map->Signal {:schema 0})))
impl-signal-keys)) 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 (deftype #_defrecord WrappedSignal
[kind ns id level signal-value_] [kind ns id level signal-value_]
sigs/ISignalHandling sigs/ISignalHandling

View file

@ -281,15 +281,20 @@
(with-sig (sig! {:level :info, :xfn+ #(assoc % :bar true)})))] (with-sig (sig! {:level :info, :xfn+ #(assoc % :bar true)})))]
(is (sm? sv {:foo true, :bar true})))])]) (is (sm? sv {:foo true, :bar true})))])])
#?(:clj (testing "Printing"
(testing "Printing" [#?(:clj (is (impl/signal? (read-string (binding [*print-dup* true] (pr-str (impl/map->Signal {})))))))
(let [sv1 (dissoc (with-sig (sig! {:level :info, :run (+ 1 2), :my-k1 :my-v1})) :_otel-context) #?(:clj (is (impl/signal? (read-string (binding [*print-dup* true] (pr-str (assoc (impl/map->Signal {}) :k :v)))))))
sv1 ; Ensure instants are printable (is (enc/str-starts-with? (binding [*print-dup* true] (str (assoc (impl/map->Signal {}) :k :v))) "taoensso.telemere.Signal{"))
(-> sv1 (is (enc/str-starts-with? (pr-str (assoc (impl/map->Signal {}) :k :v)) "#taoensso.telemere.Signal{"))
(update-in [:inst] enc/inst->udt) (is (enc/str-starts-with? (str (assoc (impl/map->Signal {}) :k :v)) "taoensso.telemere.Signal{"))
(update-in [:end-inst] enc/inst->udt))]
[(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 (deftest _handlers
;; Basic handler tests are in Encore ;; Basic handler tests are in Encore