From be2fe8c41a70a480d469c9ae6ae1c9d8de25f125 Mon Sep 17 00:00:00 2001 From: Matchu Date: Fri, 14 May 2010 18:17:10 -0400 Subject: [PATCH] rspec:install --- autotest/discover.rb | 2 + config/initializers/rspec_generator.rb | 6 +++ lib/tasks/rspec.rake | 69 ++++++++++++++++++++++++++ spec/spec_helper.rb | 24 +++++++++ 4 files changed, 101 insertions(+) create mode 100644 autotest/discover.rb create mode 100644 config/initializers/rspec_generator.rb create mode 100644 lib/tasks/rspec.rake create mode 100644 spec/spec_helper.rb diff --git a/autotest/discover.rb b/autotest/discover.rb new file mode 100644 index 00000000..f421dc5f --- /dev/null +++ b/autotest/discover.rb @@ -0,0 +1,2 @@ +Autotest.add_discovery { "rails" } +Autotest.add_discovery { "rspec2" } diff --git a/config/initializers/rspec_generator.rb b/config/initializers/rspec_generator.rb new file mode 100644 index 00000000..8fb2effb --- /dev/null +++ b/config/initializers/rspec_generator.rb @@ -0,0 +1,6 @@ +OpenneoImpressItems::Application.configure do + config.generators do |g| + g.integration_tool :rspec + g.test_framework :rspec + end +end diff --git a/lib/tasks/rspec.rake b/lib/tasks/rspec.rake new file mode 100644 index 00000000..a580b8fa --- /dev/null +++ b/lib/tasks/rspec.rake @@ -0,0 +1,69 @@ +begin + require 'rspec/core' + require 'rspec/core/rake_task' +rescue MissingSourceFile + module Rspec + module Core + class RakeTask + 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 = Rails.root.join('config', 'database.yml').exist? ? "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)" +Rspec::Core::RakeTask.new(:spec => spec_prereq) + +namespace :spec do + [:requests, :models, :controllers, :views, :helpers, :mailers, :lib].each do |sub| + desc "Run the code examples in spec/#{sub}" + Rspec::Core::RakeTask.new(sub => spec_prereq) do |t| + t.pattern = "./spec/#{sub}/**/*_spec.rb" + end + end + + task :statsetup do + require 'rails/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(Mailer\ specs spec/mailers) if File.exist?('spec/mailers') + ::STATS_DIRECTORIES << %w(Routing\ specs spec/routing) if File.exist?('spec/routing') + ::STATS_DIRECTORIES << %w(Request\ specs spec/requests) if File.exist?('spec/requests') + ::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 << "Mailer specs" if File.exist?('spec/mailer') + ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing') + ::CodeStatistics::TEST_TYPES << "Request specs" if File.exist?('spec/requests') + end +end + diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 00000000..311ba35c --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,24 @@ +# This file is copied to ~/spec when you run 'ruby script/generate rspec' +# from the project root directory. +ENV["RAILS_ENV"] ||= 'test' +require File.dirname(__FILE__) + "/../config/environment" unless defined?(Rails) +require 'rspec/rails' + +# Requires supporting files with custom matchers and macros, etc, +# in ./support/ and its subdirectories. +Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f} + +Rspec.configure do |config| + # == Mock Framework + # + # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr + config.mock_with :rspec + + # If you'd prefer not to run each of your examples within a transaction, + # uncomment the following line. + # config.use_transactional_examples = false +end