2023年4月の振り返り

こんにちは、M-Yamashitaです。
プライベートでの4月の慌ただしさが少しなくなりましたが、まだまだ落ち着きそうにはなさそうです。

それでは4月の振り返りです。

インプット

今月のインプットはありません。

アウトプット

記事

記事の投稿はありません。

OSS

4月は、actへのPull Request1件と、parallel_testsへのIssue1件を出しました。

  • Pull Request

github.com

actへのPull Requestを出そうとしたきっかけは、以前からactのリポジトリでピン留めされていたこのIssueを見たためです。(今はピン留めが外されているようです)
そのIssue内に書かれている1つの課題が、今回できそうなContributionだったのでチャレンジしてみました。

  • Issue

github.com

このparallel_testsのIssueは、私がparallel_testsを触ったときに感じた改善してほしい内容となります。現在のparallel_testsでは、コアごとの失敗したテストは、コアごとのテスト結果に表示されるだけで、各コアごとの失敗したテストをまとめて表示できるようにはなっていません。
以下のような例では、1つ目のコアで失敗した2つのテストと、2つ目のコアで失敗した1つのテストがあることが分かります。ですが、210 examples, 3 failuresの後に、3つのテストがどこで失敗したのかということを表示していません。

bundle exec parallel_rspec -n 2                   
2 processes for 19 specs, ~ 9 specs per process
・・・
Finished in 0.19009 seconds (files took 0.51351 seconds to load)
111 examples, 2 failures

Failed examples:

rspec ./spec/knapsack/config/env_spec.rb:22 # Knapsack::Config::Env.ci_node_total when ENV exists when CI_NODE_TOTAL has value is expected to eql 4
rspec ./spec/knapsack/adapters/base_adapter_spec.rb:12 # Knapsack::Adapters::BaseAdapter.bind is expected to receive binder

・・・

Finished in 1.9 seconds (files took 0.51647 seconds to load)
99 examples, 1 failure

Failed examples:

rspec ./spec/knapsack_spec.rb:7 # Knapsack.tracker is expected to eql 111

Randomized with seed 11799


210 examples, 3 failures

Took 2 seconds
Tests Failed

なぜこれを問題視しているかというと、複数のコアで大量のテストを実行し各コアで複数のテストが失敗した際、失敗したテストを探すために毎回Failed examplesで検索する必要があります。「検索せずにスクロールして失敗したテストを見つければいいのでは?」という考えもありますが、テストのログが大量に出ている場合、スクロールで失敗したテストを見つけるのは結構大変です。

これをIssueで聞いたところ、RSpec: FailuresLoggerがあるよとコメントされ、Issueがクローズされました。 コメントはありがたかったのですが、これだとpendingのテストまでファイルに出力されてしまうため、私の求めるものとはちょっと違いそうと考えています。
このIssue後、自分で機能追加していい感じに動くことを確認できたので、今後実際に使ってみる予定です。

登壇

4月の登壇はありません。

所感

今月はOSSに焦点をあてた月となりました。
コードリーディングや実装方法に結構時間を取られてしまいましたが、また1つ既存の仕組みを理解できた良い月となりました。
また今後も一歩一歩進めていきます。