TheSpyder/rescript-webapi

Improve tests with expected types and ensuring every line generates code

開放

#42 建立於 2021年11月2日

 (4 則留言) (0 個反應) (0 位負責人)ReScript (38 個分叉)github user discovery
help wanted

倉庫指標

星標
 (159 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

There are two problems with our tests:

  1. They use let _ = blah() which means if the type of a method changes the test still compiles. This is not good.
  2. By always using _ to avoid exporting the reference, some lines are optimised away by ReScript and never emitted (this is arguably a bug, but it's what we are stuck with for now).

To solve the first problem, change things like

let _ = range->getClientRects

to

let _: array<Dom.domRect> = range->getClientRects

For the second, about all we can do is audit the JS and see which lines don't result in compiled output. I have found that externals returning an optional value in a let _ = line are not emitted, here's how I solved that: https://github.com/tinymce/rescript-webapi/blob/b138ae2982d24193473e01929251871ea2d4ba65/tests/Webapi/Dom/Webapi__Dom__Document__test.res#L64-L67

The more I think about this the more I believe it should be logged as a bug with ReScript. But we should find them all first to make the bug report more valuable.

貢獻者指南