無のテストファイル

何も書かれていなさそうなテストファイルを消す作業をした。

require 'pathname'

Pathname.glob('spec/**/*_spec.rb').each do |pathname|
  if pathname.each_line.count < 10 && !pathname.read.match?(/\bit\b/)
    puts pathname
  end
end

特にRailsのようなomakaseを志向したフレームワークなんかは、ファイルジェネレーターの支援が手厚く、モデルなんかをつくろうとしたときに自動的に実装とテストファイルの雛形を自動生成してくれたりする。そういうものを気にせず放置していると、何も定義されていない空のファイルが大量に溜まっていったりするので、気を付けていないとたまにこういう活動が必要になる。

rubocop-rspecのRSpec/EmptyExampleGroupというCopでもこういうものは検知できると思う。このプロジェクトでは現在たまたまそれをすぐに利用できる状態に無かったので、雑に解決してしまった。rubocop-rspecについて言うと、無の状態から導入を提案しても合意が取れない可能性が高いので、この手の問題を見つけたときに「ね、こんな問題が解決できるでしょう」という体で提案するのが良いと思います。政治の話をしてしまったかもしれない。

汎用的なアンチパターンのあるある話だと思ったので、記事に書いておくことにした。またこういう話が出てきたら、適当な粒度で記事にまとめて雑に書いていきたい。こういうツッコミどころの多い文章は、匿名の人々による批判に合いやすく、なかなか書きにくいのだけど、助言の流布ではなく個人の記録という体裁を保つことで、気にせず書いていけたらと良いと思う。