2024 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以获取有关此工作方式的更多信息。

0
ClojureScript

cljs.test 通过 do-report 报告,它会添加从 JavaScript 调用堆栈跟踪中计算出的文件和行信息。至少在 Chrome 中,这些调用堆栈没有用

`
"错误

at https://127.0.0.1:3449/js/cljs/test.js:261:69
at cljs$test$do_report (https://127.0.0.1:3449/js/cljs/test.js:268:3)
at https://127.0.0.1:3449/js/test/test_tests.js:491:21
at test.test_tests.test_has_fails.cljs$lang$test (https://127.0.0.1:3449/js/test/test_tests.js:502:4)
at https://127.0.0.1:3449/js/cljs/test.js:384:42
at https://127.0.0.1:3449/js/cljs/test.js:387:4
at cljs$test$run_block (https://127.0.0.1:3449/js/cljs/test.js:320:13)
..."

`

“file-and-line” 调用堆栈跟踪解析器没有正确解析它,导致如下消息

在 (test-function) 失败 (在 http:384:42)

请注意,没有有用的文件/命名空间引用,行号是指编译后的 JavaScript 而非源 clojurescript。

3 个回复

0
_评论由:sfnelson_

在我公司发布 cljs.test 之前,我们维护了这个 clojure.test 的内部端口,它通过将 {{&form}} 中的源元数据添加到由 {{assert-expr}} 生成的 {{do-report}} 调用中,提供了比 cljs.test 更好的报告。这种方法对内部使用很好,但可能不适合 cljs.test,因为它可能会降低 {{assert-expr}} 在 clojure 和 clojurescript 之间的兼容性。另一种方法可以在 {{try-expr}} 生成的体中动态绑定源元数据。如果您能提供一些关于您首选方法的指示,我将乐于实现并贡献代码。

我们的 {{assert-expr}} 版本还注入了一个 "reporter 函数",{{(function(a,b,c){a.apply(b.c)})}},我们会从 report 调用它,例如 {{(reporter (.-debug js/console) js/console args)}}。这导致chrome控制台输出右侧的可点击链接链接到测试表达式的源映射位置,而不是报告函数。
0

评论由:dnolen

在此处正确的方法是将浏览器REPL堆栈跟踪解析移动到共享库,即{{.cljc}},该库可以加载到任一环境以处理浏览器差异。

0
参考: https://clojure.atlassian.net/browse/CLJS-1255(由alex+import报告)
...