Skip to content
New issue

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

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

Already on GitHub? Sign in 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

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

No branches or pull requests

2 participants