require "autospec/rspec_runner" module Autospec class SimpleRunner < RspecRunner def run(specs) puts "Running Rspec: " << specs # kill previous rspec instance self.abort # we use our custom rspec formatter args = ["-r", "#{File.dirname(__FILE__)}/formatter.rb", "-f", "Autospec::Formatter", specs.split].flatten.join(" ") # launch rspec Dir.chdir(Rails.root) do env = {"RAILS_ENV" => "test"} if specs.split(' ').any?{|s| s =~ /^(.\/)?plugins/} env["LOAD_PLUGINS"] = "1" puts "Loading plugins while running specs" end @pid = Process.spawn(env, "bin/rspec #{args}") _, status = Process.wait2(@pid) status.exitstatus end end def abort if @pid Process.kill("INT", @pid) rescue nil while (Process.getpgid(@pid) rescue nil) sleep 0.001 end @pid = nil end end def stop abort end end end