Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
231 additions
and
165 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,10 @@ | ||
#!/usr/bin/env ruby | ||
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/rspec/lib")) | ||
require 'rubygems' | ||
require 'spec' | ||
exit ::Spec::Runner::CommandLine.run(::Spec::Runner::OptionParser.parse(ARGV, STDERR, STDOUT)) | ||
if ARGV.any? {|arg| %w[--drb -X --generate-options -G --help -h --version -v].include?(arg)} | ||
require 'rubygems' unless ENV['NO_RUBYGEMS'] | ||
else | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
ENV["RAILS_ENV"] ||= 'test' | ||
require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) | ||
end | ||
require 'spec/autorun' | ||
exit ::Spec::Runner::CommandLine.run |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,116 +1,9 @@ | ||
#!/usr/bin/env ruby | ||
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec/lib' # For rspec installed as plugin | ||
require 'rubygems' | ||
require 'drb/drb' | ||
require 'rbconfig' | ||
require 'spec' | ||
require 'optparse' | ||
|
||
# This is based on Florian Weber's TDDMate | ||
module Spec | ||
module Runner | ||
class RailsSpecServer | ||
def run(argv, stderr, stdout) | ||
$stdout = stdout | ||
$stderr = stderr | ||
|
||
base = ActiveRecord::Base | ||
def base.clear_reloadable_connections! | ||
active_connections.each do |name, conn| | ||
if conn.requires_reloading? | ||
conn.disconnect! | ||
active_connections.delete(name) | ||
end | ||
end | ||
end | ||
|
||
if ActionController.const_defined?(:Dispatcher) | ||
dispatcher = ::ActionController::Dispatcher.new($stdout) | ||
dispatcher.cleanup_application | ||
elsif ::Dispatcher.respond_to?(:reset_application!) | ||
::Dispatcher.reset_application! | ||
else | ||
raise "Application reloading failed" | ||
end | ||
if Object.const_defined?(:Fixtures) && Fixtures.respond_to?(:reset_cache) | ||
Fixtures.reset_cache | ||
end | ||
|
||
::Dependencies.mechanism = :load | ||
require_dependency('application.rb') unless Object.const_defined?(:ApplicationController) | ||
load File.dirname(__FILE__) + '/../spec/spec_helper.rb' | ||
|
||
if in_memory_database? | ||
load "#{RAILS_ROOT}/db/schema.rb" # use db agnostic schema by default | ||
ActiveRecord::Migrator.up('db/migrate') # use migrations | ||
end | ||
|
||
::Spec::Runner::CommandLine.run( | ||
::Spec::Runner::OptionParser.parse( | ||
argv, | ||
$stderr, | ||
$stdout | ||
) | ||
) | ||
end | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
|
||
def in_memory_database? | ||
ENV["RAILS_ENV"] == "test" and | ||
::ActiveRecord::Base.connection.class.to_s == "ActiveRecord::ConnectionAdapters::SQLite3Adapter" and | ||
::Rails::Configuration.new.database_configuration['test']['database'] == ':memory:' | ||
end | ||
end | ||
end | ||
end | ||
puts "Loading Rails environment" | ||
ENV["RAILS_ENV"] ||= 'test' | ||
require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) | ||
|
||
ENV["RAILS_ENV"] = "test" | ||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") | ||
require 'dispatcher' | ||
|
||
def restart_test_server | ||
puts "restarting" | ||
config = ::Config::CONFIG | ||
ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT'] | ||
command_line = [ruby, $0, ARGV].flatten.join(' ') | ||
exec(command_line) | ||
end | ||
|
||
def daemonize(pid_file = nil) | ||
return yield if $DEBUG | ||
pid = Process.fork{ | ||
Process.setsid | ||
Dir.chdir(RAILS_ROOT) | ||
trap("SIGINT"){ exit! 0 } | ||
trap("SIGTERM"){ exit! 0 } | ||
trap("SIGHUP"){ restart_test_server } | ||
File.open("/dev/null"){|f| | ||
STDERR.reopen f | ||
STDIN.reopen f | ||
STDOUT.reopen f | ||
} | ||
yield | ||
} | ||
puts "spec_server launched. (PID: %d)" % pid | ||
File.open(pid_file,"w"){|f| f.puts pid } if pid_file | ||
exit! 0 | ||
end | ||
|
||
options = Hash.new | ||
opts = OptionParser.new | ||
opts.on("-d", "--daemon"){|v| options[:daemon] = true } | ||
opts.on("-p", "--pid PIDFILE"){|v| options[:pid] = v } | ||
opts.parse!(ARGV) | ||
|
||
puts "Ready" | ||
exec_server = lambda { | ||
trap("USR2") { restart_test_server } if Signal.list.has_key?("USR2") | ||
DRb.start_service("druby://127.0.0.1:8989", Spec::Runner::RailsSpecServer.new) | ||
DRb.thread.join | ||
} | ||
|
||
if options[:daemon] | ||
daemonize(options[:pid], &exec_server) | ||
else | ||
exec_server.call | ||
end | ||
require 'optparse' | ||
require 'spec/rails/spec_server' |
Oops, something went wrong.