From 5e26c29d0e055beee26e1d20ab99ae47cc951cbf Mon Sep 17 00:00:00 2001 From: Matijs van Zuijlen Date: Sat, 11 Sep 2010 17:08:17 +0200 Subject: [PATCH] Update to rspec-rails 2.0 pre-release. Older rspec-rails versions don't support Rails 3. --- .rspec | 1 + Gemfile | 8 +-- Gemfile.lock | 20 +++--- autotest/discover.rb | 2 + lib/tasks/rspec.rake | 167 ------------------------------------------- spec/spec_helper.rb | 17 +++-- 6 files changed, 29 insertions(+), 186 deletions(-) create mode 100644 .rspec create mode 100644 autotest/discover.rb delete mode 100644 lib/tasks/rspec.rake diff --git a/.rspec b/.rspec new file mode 100644 index 0000000000..53607ea52b --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--colour diff --git a/Gemfile b/Gemfile index 0dbbe410b1..a0925c436f 100644 --- a/Gemfile +++ b/Gemfile @@ -15,10 +15,10 @@ gem 'flickr', '~> 1.0.2' gem 'rubypants', '~> 0.2.0' gem 'rails-app-installer', '~> 0.2.0' -group :test do +group :development, :test do gem 'ruby-debug' gem 'factory_girl' - gem 'rspec' - gem 'rspec-rails' - gem 'flexmock' + #gem 'rspec' + gem 'rspec-rails', '>= 2.0.0.beta.20' + #gem 'flexmock' end diff --git a/Gemfile.lock b/Gemfile.lock index c4cc374766..ef859cf6c9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -39,11 +39,11 @@ GEM coderay (0.9.3) columnize (0.3.1) daemons (1.1.0) + diff-lcs (1.1.2) erubis (2.6.6) abstract (>= 1.0.0) factory_girl (1.3.2) fastthread (1.0.7) - flexmock (0.8.7) flickr (1.0.2) xml-simple (>= 1.0.7) gem_plugin (0.2.3) @@ -90,10 +90,16 @@ GEM rake (>= 0.8.4) thor (~> 0.14.0) rake (0.8.7) - rspec (1.3.0) - rspec-rails (1.3.2) - rack (>= 1.0.0) - rspec (>= 1.3.0) + rspec (2.0.0.beta.20) + rspec-core (= 2.0.0.beta.20) + rspec-expectations (= 2.0.0.beta.20) + rspec-mocks (= 2.0.0.beta.20) + rspec-core (2.0.0.beta.20) + rspec-expectations (2.0.0.beta.20) + diff-lcs (>= 1.1.2) + rspec-mocks (2.0.0.beta.20) + rspec-rails (2.0.0.beta.20) + rspec (= 2.0.0.beta.20) ruby-debug (0.10.3) columnize (>= 0.1) ruby-debug-base (~> 0.10.3.0) @@ -120,15 +126,13 @@ DEPENDENCIES calendar_date_select coderay (~> 0.9) factory_girl - flexmock flickr (~> 1.0.2) htmlentities json mini_magick (~> 1.3) rails (= 3.0.0) rails-app-installer (~> 0.2.0) - rspec - rspec-rails + rspec-rails (>= 2.0.0.beta.20) ruby-debug rubypants (~> 0.2.0) uuidtools (~> 2.1.1) diff --git a/autotest/discover.rb b/autotest/discover.rb new file mode 100644 index 0000000000..f421dc5ff9 --- /dev/null +++ b/autotest/discover.rb @@ -0,0 +1,2 @@ +Autotest.add_discovery { "rails" } +Autotest.add_discovery { "rspec2" } diff --git a/lib/tasks/rspec.rake b/lib/tasks/rspec.rake deleted file mode 100644 index 7ff2f03a7f..0000000000 --- a/lib/tasks/rspec.rake +++ /dev/null @@ -1,167 +0,0 @@ -gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9 -rspec_plugin_dir = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec') -$LOAD_PATH.unshift("#{rspec_plugin_dir}/lib") if File.exist?(rspec_plugin_dir) - -# Don't load rspec if running "rake gems:*" -unless ARGV.any? {|a| a =~ /^gems/} - -begin - require 'spec/rake/spectask' -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 -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.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 - - 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/#{sub}/**/*_spec.rb"] - end - 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['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb'] - 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') - ::STATS_DIRECTORIES << %w(Routing\ specs spec/routing) 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') - 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") - - 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 - - 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 "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 - -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6838116276..3c4724bf71 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,14 +1,17 @@ -# This file is copied to ~/spec when you run 'ruby script/generate rspec' -# from the project root directory. +# This file is copied to spec/ when you run 'rails generate rspec:install' ENV["RAILS_ENV"] ||= 'test' -require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT) -require 'spec/autorun' -require 'spec/rails' +require File.expand_path("../../config/environment", __FILE__) +require 'rspec/rails' -Spec::Runner.configure do |config| +# Requires supporting ruby files with custom matchers and macros, etc, +# in spec/support/ and its subdirectories. +Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} + +RSpec.configure do |config| + config.mock_with :rspec config.use_transactional_fixtures = true config.use_instantiated_fixtures = false - config.fixture_path = RAILS_ROOT + '/test/fixtures/' + config.fixture_path = "#{::Rails.root}/test/fixtures" config.global_fixtures = %w{ blogs categories categorizations contents feedback notifications page_caches profiles redirects resources sidebars