shimgo
4/10/2016 - 9:33 AM

Rake::TestTaskに引数を普通の関数のように渡す

Rake::TestTaskに引数を普通の関数のように渡す

Rakefile

namespace :test do
   # テストタスクの定義
   # 指定されたファイルのテストを実行する
   Rake::TestTask.new(:spot_test) do |test|
     test.libs << File.expand_path('../../', __FILE__)
     test.test_files = Dir[ "test/cases/#{ARGV.last}_test.rb" ]
     test.verbose = true
   end

   # :spot_testを呼び出すためのタスク
   # このタスクの後に:spot_testが実行される
   task :spot => [:spot_test] do |t, args|
     ARGV.slice(1,ARGV.size).each{|v| task v.to_sym do; end}
   end
 end

実行

shell> rake test:spot lib/core/query

通常、lib/core/queryが2つめのタスクとして認識されて実行されようとして
タスクが見つからないエラーが出るが、:spotタスクにて:lib/core/queryの名前の 何もしないタスクを定義しているためエラーがでない。 :spot_test内で同様の定義をしてもうまくいかないのでこのようにした。