Skip to content

Commit

Permalink
Adding latest rspec plugins from github
Browse files Browse the repository at this point in the history
  • Loading branch information
robbyrussell committed Sep 2, 2008
1 parent eeb3564 commit f9984bf
Show file tree
Hide file tree
Showing 565 changed files with 45,594 additions and 9 deletions.
132 changes: 132 additions & 0 deletions lib/tasks/rspec.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
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]))

# 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)
require 'spec/rake/spectask'

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 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 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')
::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
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
end
end
end
3 changes: 3 additions & 0 deletions script/autospec
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env ruby
ENV['RSPEC'] = 'true'
system 'autotest'
22 changes: 18 additions & 4 deletions script/spec_server
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env ruby
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../rspec/lib' # For svn
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec/lib' # For rspec installed as plugin
require 'rubygems'
require 'drb/drb'
Expand All @@ -23,20 +22,29 @@ module Spec
active_connections.delete(name)
end
end
end
end

if ActionController.const_defined?(:Dispatcher)
dispatcher = ::ActionController::Dispatcher.new($stdout)
dispatcher.cleanup_application(true)
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,
Expand All @@ -45,6 +53,12 @@ module Spec
)
)
end

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
Expand Down Expand Up @@ -91,7 +105,7 @@ opts.parse!(ARGV)
puts "Ready"
exec_server = lambda {
trap("USR2") { restart_test_server } if Signal.list.has_key?("USR2")
DRb.start_service("druby://localhost:8989", Spec::Runner::RailsSpecServer.new)
DRb.start_service("druby://127.0.0.1:8989", Spec::Runner::RailsSpecServer.new)
DRb.thread.join
}

Expand Down
6 changes: 2 additions & 4 deletions spec/spec.opts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
--colour
--format
progress
--loadby
mtime
--format progress
--loadby mtime
--reverse
9 changes: 8 additions & 1 deletion spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
# If you declare global fixtures, be aware that they will be declared
# for all of your examples, even those that don't use them.
#
# You can also declare which fixtures to use (for example fixtures for test/fixtures):
#
# config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
#
# == Mock Framework
#
# RSpec uses it's own mocking framework by default. If you prefer to
Expand All @@ -36,11 +40,14 @@
# config.mock_with :mocha
# config.mock_with :flexmock
# config.mock_with :rr
#
# == Notes
#
# For more information take a look at Spec::Example::Configuration and Spec::Runner
end

module LinkSpecHelper
def valid_attributes
{:website_url => 'http://www.google.com/', :ip_address => '192.168.1.1'}
end
end

7 changes: 7 additions & 0 deletions vendor/plugins/rspec-rails/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
tmtags
.DS_Store
.emacs-project
*~
pkg
doc
email.txt
40 changes: 40 additions & 0 deletions vendor/plugins/rspec-rails/History.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
=== In Development (git clone git://github.com/dchelimsky/rspec-rails.git)

IMPORTANT: use 'script/autospec' (or just 'autospec' if you have the rspec gem
installed) instead of 'autotest'. We changed the way autotest discovers rspec
so the autotest executable won't automatically load rspec anymore. This allows
rspec to live side by side other spec frameworks without always co-opting
autotest through autotest's discovery mechanism.

* Generated route specs have shorter names, making it less painful to modify their implementation
* Add conditional so Rails 2.1.0 doesn't warn about cache_template_extensions (patch from James Herdman)
* Fixed stub_model examples to work with Rails 2.1.0 (the code was fine, just the examples needed patching)
* use hoe for build/release
* reworked generated examples for rspec_scaffold - thanks to Mikel Lindsaar and Dan Manges for their feedback
* bye, bye translator
* Added proxy to cookies so you can set them in examples the same way you set them in controllers
* Added script/autospec so you can run autospec without installing the gem
* Support --skip-fixture in the rspec_model generator (patches from Alex Tomlins and Niels Ganser)
* Add mock_model#as_new_record (patch from Zach Dennis)

=== Version 1.1.4

Maintenance release.

* Moved mock_model and stub_model to their own module: Spec::Rails::Mocks
* Setting mock_model object id with stubs hash - patch from Adam Meehan
* Added as_new_record to stub_model e.g. stub_model(Foo).as_new_record
* Improved stub_model such that new_record? does "the right thing"
* Patch from Pat Maddox to get integrate_views to work in nested example groups.
* Patch from Pat Maddox to get controller_name to work in nested example groups.
* Patch from Corey Haines to add include_text matcher
* Added stub_model method which creates a real model instance with :id stubbed and data access prohibited.
* Applied patch from Pat Maddox to handle redirect_to w/ SSL. Closes #320.
* Added #helper and #assigns to helper specs.
* Applied patch from Bryan Helmkamp to tweak format of generated spec.opts to be more obvious. Closes #162.
* Tweaked list of exceptions (ignores) for autotest
* Applied patch from Rick Olson to get rspec_on_rails working with rails edge (>= 8862)
* Applied patch from Wincent Colaiuta to invert sense of "spec --diff". Closes #281.
* Allow any type of render in view specs. Closes #57.
* Applied patch from Ian White to get rspec working with edge rails (8804). Closes #271.
* Applied patch from Jon Strother to have spec_server reload fixtures. Closes #344.

0 comments on commit f9984bf

Please sign in to comment.