From 09faca8e16f16c24b787603a316a67d466c34fd3 Mon Sep 17 00:00:00 2001 From: jonathannewman Date: Fri, 28 Jun 2024 08:46:07 -0700 Subject: [PATCH] (maint) update `logged?` for better messaging Update the `logged?` function to only emit messages when there are multiple statements when they aren't expected, and also clean up the output to be more useful. --- test/puppetlabs/trapperkeeper/testutils/logging.clj | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/test/puppetlabs/trapperkeeper/testutils/logging.clj b/test/puppetlabs/trapperkeeper/testutils/logging.clj index 60a60e8..93fc65d 100644 --- a/test/puppetlabs/trapperkeeper/testutils/logging.clj +++ b/test/puppetlabs/trapperkeeper/testutils/logging.clj @@ -318,6 +318,7 @@ (swap! destination# conj event#))] ~@body))))) + (s/defn ^{:always-validate true} logged? ([msg-or-pred] (logged? msg-or-pred nil nil)) ([msg-or-pred maybe-level] (logged? msg-or-pred maybe-level nil)) @@ -329,9 +330,14 @@ (let [match? (cond (ifn? msg-or-pred) msg-or-pred (string? msg-or-pred) #(= msg-or-pred (:message %)) :else #(re-find msg-or-pred (:message %))) - one-element-if-specified? #(if (and (seq %) (or disable-single-line-match-restriction (empty? (rest %)))) - true - (println "\n`logged?` warning: multiple log line matches found, but this arity expects only one match, returning false. Found matches: " % "\n")) + one-element-if-specified? (fn [items] + (let [items? (seq items)] + (if (and items? (or disable-single-line-match-restriction (empty? (rest items?)))) + true + (if items? + (do (println "\n`logged?` warning: multiple log line matches found, but this arity expects only one match, returning false. Found matches: \n" (pr-str (map :message items)) "\n") + false) + false)))) correct-level? #(or (nil? maybe-level) (= maybe-level (:level %)))] (->> (map event->map @*test-log-events*) (filter correct-level?)