discourse/lib/autospec/simple_runner.rb

44 lines
1010 B
Ruby
Raw Normal View History

2013-11-02 06:57:50 +08:00
require "autospec/rspec_runner"
2013-10-24 07:06:05 +08:00
module Autospec
2013-11-02 06:57:50 +08:00
class SimpleRunner < RspecRunner
def run(specs)
puts "Running Rspec: " << specs
# kill previous rspec instance
self.abort
2013-11-02 06:57:50 +08:00
# 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
2017-07-28 09:20:09 +08:00
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
2013-11-02 06:57:50 +08:00
end
2013-10-24 07:06:05 +08:00
def abort
if @pid
2013-11-02 06:57:50 +08:00
Process.kill("INT", @pid) rescue nil
while (Process.getpgid(@pid) rescue nil)
2013-10-24 07:06:05 +08:00
sleep 0.001
end
@pid = nil
end
end
def stop
2013-11-02 06:57:50 +08:00
abort
2013-10-24 07:06:05 +08:00
end
2013-11-02 06:57:50 +08:00
2013-10-24 07:06:05 +08:00
end
2013-11-02 06:57:50 +08:00
2013-10-24 07:06:05 +08:00
end