Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

(tests) should not return the final assertion, it's annoying #68

Open
dustingetz opened this issue Sep 21, 2022 · 4 comments
Open

(tests) should not return the final assertion, it's annoying #68

dustingetz opened this issue Sep 21, 2022 · 4 comments

Comments

@dustingetz
Copy link
Member

This is what I see for a passing test:
image

(tests
  (unqualify ::x) := :x
  (unqualify nil) := nil
  (unqualify "") :throws AssertionError
  )
✅✅✅=>
#error{:cause "Assert failed: (or (nil? ?qualified-kw) (qualified-keyword? ?qualified-kw))",
       :via [{:type java.lang.AssertionError,
              :message "Assert failed: (or (nil? ?qualified-kw) (qualified-keyword? ?qualified-kw))",
              :at [contrib.data$unqualify invokeStatic "data.cljc" 21]}],
       :trace [[contrib.data$unqualify invokeStatic "data.cljc" 21]
               [contrib.data$unqualify invoke "data.cljc" 21]
               [contrib.data$eval44265 invokeStatic "data.cljc" 30]
               [contrib.data$eval44265 invoke "data.cljc" 30]
               [clojure.lang.Compiler eval "Compiler.java" 7194]
               [clojure.lang.Compiler eval "Compiler.java" 7149]
               [clojure.core$eval invokeStatic "core.clj" 3215]
               [clojure.core$eval invoke "core.clj" 3211]
               [nrepl.middleware.interruptible_eval$evaluate$fn__1013$fn__1014
                invoke
                "interruptible_eval.clj"
                87]
               [clojure.lang.AFn applyToHelper "AFn.java" 152]
               [clojure.lang.AFn applyTo "AFn.java" 144]
               [clojure.core$apply invokeStatic "core.clj" 667]
               [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1990]
               [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1990]
               [clojure.lang.RestFn invoke "RestFn.java" 425]
               [nrepl.middleware.interruptible_eval$evaluate$fn__1013
                invoke
                "interruptible_eval.clj"
                87]
               [clojure.main$repl$read_eval_print__9206$fn__9209 invoke "main.clj" 437]
               [clojure.main$repl$read_eval_print__9206 invoke "main.clj" 437]
               [clojure.main$repl$fn__9215 invoke "main.clj" 458]
               [clojure.main$repl invokeStatic "main.clj" 458]
               [clojure.main$repl doInvoke "main.clj" 368]
               [clojure.lang.RestFn invoke "RestFn.java" 1523]
               [nrepl.middleware.interruptible_eval$evaluate
                invokeStatic
                "interruptible_eval.clj"
                84]
               [nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 56]
               [nrepl.middleware.interruptible_eval$interruptible_eval$fn__1044$fn__1048
                invoke
                "interruptible_eval.clj"
                152]
               [clojure.lang.AFn run "AFn.java" 22]
               [nrepl.middleware.session$session_exec$main_loop__1112$fn__1116
                invoke
                "session.clj"
                202]
               [nrepl.middleware.session$session_exec$main_loop__1112 invoke "session.clj" 201]
               [clojure.lang.AFn run "AFn.java" 22]
               [java.lang.Thread run "Thread.java" 833]]}
@ggeoffrey
Copy link
Member

tests returns the last value, as in do. Should errors be handled differently because of the way they are printed at the REPL?

@dustingetz
Copy link
Member Author

dustingetz commented Sep 22, 2022

In my current opinion tests should discard the last value and return nil, in practice I do not recall ever getting value from this and only being annoyed when the REPL prints a long value. (needing to interrupt flow and touch the mouse to find out if the test passed)

here is another example in datafy-fs:

(tests
  ; careful, calling seq loses metas on the underlying
  (def h (clojure.java.io/file "src/"))
  (type h) := java.io.File
  "(datafy file) returns an EDN-ready data view that is one layer deep"
  (datafy h)
  := #:user.datafy-fs{:name "src",
                      :absolute-path _,
                      :size _,
                      :modified _,
                      :created _,
                      :accessed _,
                      :kind ::dir,
                      :children _
                      :parent ...})

and the REPL output looks like:
image

this is what i want to see, 100% of the time:
image

@dustingetz
Copy link
Member Author

It also makes the nextjournal notebook experiments a bit worse - https://nextjournal.com/dustingetz/datafynav-implementations-for-javaiofile – I see these notebooks as essays or docs and I want to carefully direct the user's attention by removing unnecessary noise

@dustingetz
Copy link
Member Author

duplicate #61

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants