Rakefile内の既存のテストファイルに基づいて動的にテストタスクを生成しています。パターンにちなんで名付けられたさまざまな単体テストファイルがあるとしますtest_<name>.rb
。つまり、私が行っているのは、「test」名前空間内のファイル名にちなんで名付けられたタスクを作成することです。以下のコードを使用して、すべてのテストを呼び出すことができますrake test:<name>
require 'rake/testtask'
task :default => 'test:all'
namespace :test do
desc "Run all tests"
Rake::TestTask.new(:all) do |t|
t.test_files = FileList['test_*.rb']
end
FileList['test_*.rb'].each do |task|
name = task.gsub(/test_|\.rb\z/, '')
desc "Run #{name} tests"
Rake::TestTask.new(:"#{name}") do |t|
t.pattern = task
end
end
end
上記のコードは機能しますが、単純なタスク生成にはコードが多すぎるようです。そして、私はまだいくつかの説明テキストをコンソールに印刷する方法を理解していませんputs "Running #{name} tests:"
上記の方法よりもエレガントな方法はありますか?
編集:私が本当に期待していたのは、タスクを動的に定義するためのループの代替手段でしたが、rake libはそれに対するヘルパーを提供しないと思うので、ループで立ち往生しています。