先日 turnip-parallel_tests を作った のですが、これには物足りないところがあって
あるプロセスに重い(ステップの多い)フューチャファイルが偏ってしまう可能性がある
という問題でした。
turnip-parallel_tests
は ParallelTests::RSpec::Runner
をベースにしていて、
こいつのファイルの振り分けの基準が 「見つかった順に」or「ファイルサイズが平均化されるように」 です。
オプション無しであればファイルサイズを見て parallel_tests
側で調整してくれるので、
通常ステップが多ければ多いほどファイルサイズもでかくなるフューチャファイルも
その恩恵を受けられるはずです。
ですが、cucumber や turnip が使用している gherkin には ScenarioOutline と呼ばれるものがあります。 こいつを使うと見た目の行数よりも多くのステップを実行することになるので、 一見すると小さなファイルだけどものすごくボトルネックになりかねない素養をもった フューチャファイルに成長してしまいます。
まあそんなわけでステップ数を考慮するように修正しました。
http://rubygems.org/gems/turnip-parallel_tests/versions/0.0.2
一応 parallel_tests
が以前から gherkin format を解析して steps で振り分ける機能を持っていたので、それを利用させてもらいました。
※ Scenario Outline のステップ数の数え方が少し気になったので Pull Request 出すなどしました。即マージされてよかった
これで職場のテストも早くなることを期待しています。