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

Problem: Failed Async.Promise .wait test in Windows #809

Open
tsuyoshicho opened this issue Mar 14, 2024 · 1 comment · May be fixed by #810
Open

Problem: Failed Async.Promise .wait test in Windows #809

tsuyoshicho opened this issue Mar 14, 2024 · 1 comment · May be fixed by #810
Assignees

Comments

@tsuyoshicho
Copy link
Contributor

tsuyoshicho commented Mar 14, 2024

次のテストの失敗により、PRがマージできていない

Failures:
  1) Async.Promise .wait() waits at least the interval milliseconds (interval < epoch)
     Error occurred line:
      26:         Assert Compare(done, '<=', 1360)
     The right expression was expected, but it was not the case.

         expression: 1360.9037 <= 1360

slackでは、以下の会話があり、テスト自体が不十分な実装になっていると言える

msg

KoRoN

https://github.com/vim-jp/vital.vim/actions/runs/8264706031/job/22608859976

12msだな

これなんでintervalが340なのに 1000 + 360 を閾値にしてるんですかね +20が不明。

この変更を入れる前は1000 + 200でみてた。タスクスイッチを考慮しての+20?
なるほどな。もともとは1000msのWaitの終了をinterval 200でみてて、さらに終わりを複数回計測してるのね。

あー 340x4 - 1000 で 360 って感じ?

テストのマジックナンバーはコメントが要るねぇ。
…これは何をテストしてるんだ?

P.waitのintervalが機能していること、だとしたらtoo muchというかノイズが多くてこのテストで良いのかわかんねぇな。

現状の実装だと「n 秒後に完了するタスクを m 秒間隔でポーリングして、実際に完了した際に n 秒以上 n + m 秒以下の時間が経過していること」ってのは、テストしたい内容に対して妥当なのかというところまで行き着く。

msg

KoRoN

文字通りの内容をテストするなら、intervalを挟むことで離散的な経過時間が得られる、みたいなテストになるとは思うんですけど、その場合でも下限の保証はできても上限はむずいかも。

  • 500msのタスクをinterval 200msで待ったら、600ms以上800ms未満だった
  • 700msのタスクをinterval 200msで待ったら、800ms以上1000ms未満だった

みたいなテストが正しいと思う。

上記で対応を考える

@tsuyoshicho tsuyoshicho self-assigned this Mar 14, 2024
@tsuyoshicho
Copy link
Contributor Author

macを除外しているが、その理由、問題などはすでに不明
動くなら、新しいテストでは動作させる

@tsuyoshicho tsuyoshicho linked a pull request Mar 16, 2024 that will close this issue
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

Successfully merging a pull request may close this issue.

1 participant