require "rake/testtask" REDIS_DIR = File.expand_path(File.join("..", "test"), __FILE__) REDIS_CNF = File.join(REDIS_DIR, "test.conf") REDIS_PID = File.join(REDIS_DIR, "db", "redis.pid") task :default => :run desc "Run tests and manage server start/stop" task :run => [:start, :test, :stop] desc "Start the Redis server" task :start do unless File.exists?(REDIS_PID) system "redis-server #{REDIS_CNF}" end end desc "Stop the Redis server" task :stop do if File.exists?(REDIS_PID) system "kill #{File.read(REDIS_PID)}" system "rm #{REDIS_PID}" end end task :test do require File.expand_path(File.join(File.dirname(__FILE__), "test", "test_helper")) Dir["test/**/*_test.rb"].each_with_index do |file, index| ENV["REDIS_URL"] = "redis://127.0.0.1:6379/#{index}" fork do load file end exit $?.exitstatus unless $?.success? end Process.waitall end