require 'rake' require 'rake/testtask' require 'pathname' TEST_DIRECTORY = Pathname.new(File.expand_path(__FILE__)).parent.realpath TEST_FILES = FileList["#{TEST_DIRECTORY}/test_*.rb"] GEM_DEPS = ['mocha'] Dir.chdir(TEST_DIRECTORY) task :default => :test task :deps do GEM_DEPS.each do |dep| `gem list --installed #{dep}` next if $?.success? sh 'gem', 'install', '--no-ri', '--no-rdoc', '--user-install', dep end end Rake::TestTask.new(:test) do |t| t.libs << Dir.pwd t.test_files = TEST_FILES end namespace :test do TEST_FILES.each do |file| task = /test_(.+)\.rb/.match(file) Rake::TestTask.new(task[1]) do |t| t.libs << Dir.pwd t.pattern = task[0] end end end begin require 'rubygems' require 'rcov/rcovtask' Rcov::RcovTask.new do |t| t.libs << Dir.pwd t.test_files = TEST_FILES t.rcov_opts = %w{--exclude=Gems --exclude=test_ --exclude=testball --exclude=testing} t.output_dir = TEST_DIRECTORY+'coverage' end rescue LoadError end begin require 'rubygems' require 'ruby-prof/task' RubyProf::ProfileTask.new do |t| t.libs << Dir.pwd t.test_files = TEST_FILES t.output_dir = TEST_DIRECTORY+'prof' t.printer = :graph_html t.min_percent = 2 end rescue LoadError end