This repository has been archived by the owner on Dec 20, 2019. It is now read-only.
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
Dimitrij Denissenko
committed
Mar 16, 2009
1 parent
6c43d2f
commit ebcd4d7
Showing
21 changed files
with
282 additions
and
359 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,144 +1,181 @@ | ||
raise "To avoid rake task loading problems: run 'rake clobber' in vendor/plugins/rspec" if File.directory?(File.join(File.dirname(__FILE__), *%w[.. .. vendor plugins rspec pkg])) | ||
raise "To avoid rake task loading problems: run 'rake clobber' in vendor/plugins/rspec-rails" if File.directory?(File.join(File.dirname(__FILE__), *%w[.. .. vendor plugins rspec-rails pkg])) | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
rspec_gem_dir = nil | ||
Dir["#{RAILS_ROOT}/vendor/gems/*"].each do |subdir| | ||
rspec_gem_dir = subdir if subdir.gsub("#{RAILS_ROOT}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb") | ||
end | ||
rspec_plugin_dir = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec') | ||
|
||
# In rails 1.2, plugins aren't available in the path until they're loaded. | ||
# Check to see if the rspec plugin is installed first and require | ||
# it if it is. If not, use the gem version. | ||
rspec_base = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec/lib') | ||
$LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base) | ||
if rspec_gem_dir && (test ?d, rspec_plugin_dir) | ||
raise "\n#{'*'*50}\nYou have rspec installed in both vendor/gems and vendor/plugins\nPlease pick one and dispose of the other.\n#{'*'*50}\n\n" | ||
end | ||
|
||
if rspec_gem_dir | ||
$LOAD_PATH.unshift("#{rspec_gem_dir}/lib") | ||
elsif File.exist?(rspec_plugin_dir) | ||
$LOAD_PATH.unshift("#{rspec_plugin_dir}/lib") | ||
end | ||
|
||
# Don't load rspec if running "rake gems:*" | ||
unless ARGV.any? {|a| a =~ /^gems/} | ||
|
||
begin | ||
require 'spec/rake/spectask' | ||
|
||
spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop | ||
task :noop do | ||
rescue MissingSourceFile | ||
module Spec | ||
module Rake | ||
class SpecTask | ||
def initialize(name) | ||
task name do | ||
# if rspec-rails is a configured gem, this will output helpful material and exit ... | ||
require File.expand_path(File.dirname(__FILE__) + "/../../config/environment") | ||
|
||
# ... otherwise, do this: | ||
raise <<-MSG | ||
#{"*" * 80} | ||
* You are trying to run an rspec rake task defined in | ||
* #{__FILE__}, | ||
* but rspec can not be found in vendor/gems, vendor/plugins or system gems. | ||
#{"*" * 80} | ||
MSG | ||
end | ||
end | ||
end | ||
end | ||
end | ||
|
||
task :default => :spec | ||
task :stats => "spec:statsetup" | ||
|
||
desc "Run all specs in spec directory (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t| | ||
end | ||
|
||
Rake.application.instance_variable_get('@tasks').delete('default') | ||
|
||
spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop | ||
task :noop do | ||
end | ||
|
||
task :default => :spec | ||
task :stats => "spec:statsetup" | ||
|
||
desc "Run all specs in spec directory (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['spec/**/*/*_spec.rb'] | ||
end | ||
|
||
namespace :spec do | ||
desc "Run all specs in spec directory with RCov (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:rcov) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['spec/**/*_spec.rb'] | ||
t.spec_files = FileList['spec/**/*/*_spec.rb'] | ||
t.rcov = true | ||
t.rcov_opts = lambda do | ||
IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten | ||
end | ||
end | ||
|
||
desc "Print Specdoc for all specs (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:doc) do |t| | ||
t.spec_opts = ["--format", "specdoc", "--dry-run"] | ||
t.spec_files = FileList['spec/**/*/*_spec.rb'] | ||
end | ||
|
||
namespace :spec do | ||
desc "Run all specs in spec directory with RCov (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:rcov) do |t| | ||
|
||
desc "Print Specdoc for all plugin examples" | ||
Spec::Rake::SpecTask.new(:plugin_doc) do |t| | ||
t.spec_opts = ["--format", "specdoc", "--dry-run"] | ||
t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*') | ||
end | ||
|
||
[:models, :controllers, :views, :helpers, :lib].each do |sub| | ||
desc "Run the code examples in spec/#{sub}" | ||
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['spec/**/*_spec.rb'] | ||
t.rcov = true | ||
t.rcov_opts = lambda do | ||
IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten | ||
end | ||
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"] | ||
end | ||
|
||
desc "Print Specdoc for all specs (excluding plugin specs)" | ||
Spec::Rake::SpecTask.new(:doc) do |t| | ||
t.spec_opts = ["--format", "specdoc", "--dry-run"] | ||
t.spec_files = FileList['spec/**/*_spec.rb'] | ||
end | ||
|
||
desc "Print Specdoc for all plugin specs" | ||
Spec::Rake::SpecTask.new(:plugin_doc) do |t| | ||
t.spec_opts = ["--format", "specdoc", "--dry-run"] | ||
t.spec_files = FileList['vendor/plugins/**/spec/**/*_spec.rb'].exclude('vendor/plugins/rspec/*') | ||
end | ||
|
||
[:models, :controllers, :views, :helpers, :lib].each do |sub| | ||
desc "Run the specs under spec/#{sub}" | ||
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"] | ||
end | ||
end | ||
|
||
desc "Run the specs under extension" | ||
Spec::Rake::SpecTask.new(:extension => spec_prereq) do |t| | ||
name = (ENV['RETRO_EXT'] || ENV['X']) | ||
end | ||
|
||
desc "Run the code examples in vendor/plugins (except RSpec's own)" | ||
Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*") | ||
end | ||
|
||
namespace :plugins do | ||
desc "Runs the examples for rspec_on_rails" | ||
Spec::Rake::SpecTask.new(:rspec_on_rails) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList["extensions/#{name}/**/*_spec.rb"] | ||
t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb'] | ||
end | ||
|
||
desc "Run the specs under vendor/plugins (except RSpec's own)" | ||
Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['vendor/plugins/**/spec/**/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*") | ||
end | ||
|
||
# Setup specs for stats | ||
task :statsetup do | ||
require 'code_statistics' | ||
::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models') | ||
::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views') | ||
::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers') | ||
::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers') | ||
::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib') | ||
::STATS_DIRECTORIES << %w(Routing\ specs spec/lib) if File.exist?('spec/routing') | ||
::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models') | ||
::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views') | ||
::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers') | ||
::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers') | ||
::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib') | ||
::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing') | ||
::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/} | ||
end | ||
|
||
namespace :db do | ||
namespace :fixtures do | ||
desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z." | ||
task :load => :environment do | ||
ActiveRecord::Base.establish_connection(Rails.env) | ||
base_dir = File.join(Rails.root, 'spec', 'fixtures') | ||
fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir | ||
|
||
require 'active_record/fixtures' | ||
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file| | ||
Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*')) | ||
end | ||
end | ||
end | ||
end | ||
|
||
namespace :server do | ||
daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/pids/spec_server.pid") | ||
|
||
namespace :plugins do | ||
desc "Runs the examples for rspec_on_rails" | ||
Spec::Rake::SpecTask.new(:rspec_on_rails) do |t| | ||
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""] | ||
t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*_spec.rb'] | ||
desc "start spec_server." | ||
task :start do | ||
if File.exist?(daemonized_server_pid) | ||
$stderr.puts "spec_server is already running." | ||
else | ||
$stderr.puts %Q{Starting up spec_server ...} | ||
FileUtils.mkdir_p('tmp/pids') unless test ?d, 'tmp/pids' | ||
system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid) | ||
end | ||
end | ||
|
||
# Setup specs for stats | ||
task :statsetup do | ||
require 'code_statistics' | ||
::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models') | ||
::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views') | ||
::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers') | ||
::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers') | ||
::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib') | ||
::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models') | ||
::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views') | ||
::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers') | ||
::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers') | ||
::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib') | ||
::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/} | ||
end | ||
|
||
namespace :db do | ||
namespace :fixtures do | ||
desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y" | ||
task :load => :environment do | ||
require 'active_record/fixtures' | ||
ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym) | ||
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file| | ||
Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*')) | ||
end | ||
end | ||
|
||
desc "stop spec_server." | ||
task :stop do | ||
unless File.exist?(daemonized_server_pid) | ||
$stderr.puts "No server running." | ||
else | ||
$stderr.puts "Shutting down spec_server ..." | ||
system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) && | ||
File.delete(daemonized_server_pid) | ||
end | ||
end | ||
|
||
namespace :server do | ||
daemonized_server_pid = File.expand_path("spec_server.pid", RAILS_ROOT + "/tmp") | ||
|
||
desc "start spec_server." | ||
task :start do | ||
if File.exist?(daemonized_server_pid) | ||
$stderr.puts "spec_server is already running." | ||
else | ||
$stderr.puts "Starting up spec server." | ||
system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid) | ||
end | ||
end | ||
|
||
desc "stop spec_server." | ||
task :stop do | ||
unless File.exist?(daemonized_server_pid) | ||
$stderr.puts "No server running." | ||
else | ||
$stderr.puts "Shutting down spec_server." | ||
system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) && | ||
File.delete(daemonized_server_pid) | ||
end | ||
end | ||
|
||
desc "reload spec_server." | ||
task :restart do | ||
unless File.exist?(daemonized_server_pid) | ||
$stderr.puts "No server running." | ||
else | ||
$stderr.puts "Reloading down spec_server." | ||
system("kill", "-s", "USR2", File.read(daemonized_server_pid).strip) | ||
end | ||
|
||
desc "restart spec_server." | ||
task :restart => [:stop, :start] | ||
|
||
desc "check if spec server is running" | ||
task :status do | ||
if File.exist?(daemonized_server_pid) | ||
$stderr.puts %Q{spec_server is running (PID: #{File.read(daemonized_server_pid).gsub("\n","")})} | ||
else | ||
$stderr.puts "No server running." | ||
end | ||
end | ||
end | ||
end | ||
|
||
rescue LoadError | ||
end |
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,22 @@ | ||
#!/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)) | ||
gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 | ||
rails_root = File.expand_path(File.dirname(__FILE__) + "/..") | ||
rspec_gem_dir = nil | ||
Dir["#{rails_root}/vendor/gems/*"].each do |subdir| | ||
rspec_gem_dir = subdir if subdir.gsub("#{rails_root}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb") | ||
end | ||
rspec_plugin_dir = File.expand_path("#{rails_root}/vendor/plugins/rspec") | ||
|
||
if rspec_gem_dir && (test ?d, rspec_plugin_dir) | ||
raise "\n#{'*'*50}\nYou have rspec installed in both vendor/gems and vendor/plugins\nPlease pick one and dispose of the other.\n#{'*'*50}\n\n" | ||
end | ||
|
||
if rspec_gem_dir | ||
$LOAD_PATH.unshift("#{rspec_gem_dir}/lib") | ||
elsif File.exist?(rspec_plugin_dir) | ||
$LOAD_PATH.unshift("#{rspec_plugin_dir}/lib") | ||
end | ||
|
||
|
||
require 'spec/autorun' | ||
exit ::Spec::Runner::CommandLine.run |
Oops, something went wrong.