既存の記事には見当たらず(探し方が悪いだけかも),リファレンスでも見つけるのが困難だったので記事にする。
gem を開発していて,テストを実行するには,
rake test
とすればよい。
おっと,前提条件として,
bundle gem hoge
のようにして作った,典型的な構成の gem とする。
特定のテストファイルだけを実行したいときにはどうするか?
以下のようにしてファイルを指定すればよい。
rake test TEST=path/to/some_test.rb
このことは Ruby 公式リファレンスの
class Rake::TestTask (Ruby 2.7.0 リファレンスマニュアル)
に「test ターゲットの使用例」として書いてあった。
うーん,しかし,このページにたどり着くのはなかなか難しいな。それに「例」として 1 行掲載されているだけで説明が無いし。
実験したところ,TEST の指定にはワイルドカードが使えるようだった。
よって,ディレクトリーや拡張子を書くのが面倒なら
rake test TEST=**/some_test*
のようにすることもできる。
ちなみに bundle gem hoge で作った gem だと test がデフォルトタスクなので,test を略して
rake TEST=**/some_test*
と書くこともできる。
追記 2025-10-26
シェルによっては * がそのまま渡されずに,シェルに対するワイルドカードとみなされて
zsh: no matches found: TEST=**/some_test*
のような結果になる。
このような場合,
rake TEST="**/some_test*"
とか
rake "TEST=**/some_test*"
のように " " で囲って書けばよいようだ。
(' ' で囲ってもよいみたい)