2024 Clojure调查问卷中分享您的想法!

欢迎!请参阅关于页面以了解如何使用此功能的相关信息。

0
Spec
我预计“explain-data”应包含相同的“via”项,无论它是从s/explain-data调用返回的还是如果它在断言失败期间传递给打印器。

重现


(s/check-asserts true)
  
  (s/def :example/name string?)
  (def !ed (atom nil))


  (s/explain-data :example/name 1)
  ;; #:clojure.spec.alpha{:problems [{:path [], :pred clojure.core/string?, :val 1, :via [:example/name], :in []}], :spec :example/name, :value 1}


  (try
    (binding [s/*explain-out* (fn [ed]
                                (reset! !ed ed)
                                "captured")]
      (s/assert :example/name 1))
    (catch Exception e))

  @!ed
  ;; #:clojure.spec.alpha{:problems [{:path [], :pred clojure.core/string?, :val 1, :via [], :in []}], :spec :example/name, :value 1, :failure :assertion-failed}


预期:两种情况下的“:via”项应相同
实际:在断言失败期间传递给打印器的explain-data中的“:via”项为空。

1 回答

0
参考:https://clojure.atlassian.net/browse/CLJ-2268 (由 bbrinck 报告)
...