require 'rake' require 'rake/testtask' TEST_DIRECTORY = File.dirname(File.expand_path(__FILE__)) TEST_FILES = Dir["#{TEST_DIRECTORY}/test_*.rb"] GEM_DEPS = { "mocha" => "~> 1.1", "minitest" => "~> 5.3", "rake" => "~> 10.3", } task :default => :test task :deps do GEM_DEPS.each do |dep, version| `gem list --installed #{dep} -v '#{version}'` next if $?.success? sh "gem", "install", "--no-ri", "--no-rdoc", "--user-install", dep, "-v", version end end Rake::TestTask.new(:test) do |t| t.libs << TEST_DIRECTORY t.test_files = TEST_FILES end namespace :test do TEST_FILES.each do |file| name = file[/test_(.+)\.rb/, 1] Rake::TestTask.new(name) do |t| t.libs << TEST_DIRECTORY t.test_files = [file] end end end