sauce_ruby/Rakefile

107 lines
2.5 KiB
Ruby

require 'rubygems'
require 'bundler'
require 'rake/testtask'
require 'rspec/core/rake_task'
require 'shellwords'
Bundler::GemHelper.install_tasks
namespace :spec do
rspec_options = '--color --format d --fail-fast --order random'
RSpec::Core::RakeTask.new(:unit) do |s|
s.pattern = 'spec/sauce/**_spec.rb'
s.rspec_opts = rspec_options
end
RSpec::Core::RakeTask.new(:integration) do |s|
s.pattern = 'spec/integration/**_spec.rb'
s.rspec_opts = rspec_options
end
end
def ensure_rvm!
unless File.exists? File.expand_path("~/.rvm/scripts/rvm")
abort("I don't think you have RVM installed, which means this test will fail")
end
end
namespace :test do
namespace :cucumber do
desc "Run an integration test with the cucumber-capybara code (slow)"
task :capybara do |t|
ensure_rvm!
sh "(cd examples/cucumber-capybara/ && ./run-test.sh)"
end
end
namespace :rails3 do
desc "Run an integration test with the rails3-demo code (slow)"
task :testunit do |t|
ensure_rvm!
sh "(cd examples/rails3-demo && ./run-test.sh)"
end
end
end
desc "Run *all* tests, this will be slow!"
task :test => [:'spec:unit', :'spec:integration',
:'test:cucumber:capybara', :'test:rails3:testunit']
Rake::TestTask.new(:examples) do |test|
test.libs << 'lib' << 'examples'
test.pattern = 'examples/test_*.rb'
test.verbose = true
end
begin
require 'rcov/rcovtask'
Rcov::RcovTask.new do |test|
test.libs << 'test'
test.pattern = 'test/**/test_*.rb'
test.verbose = true
end
rescue LoadError
task :rcov do
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
end
end
begin
require 'rdoc/task'
rescue LoadError
require 'rake/rdoctask'
end
Rake::RDocTask.new do |rdoc|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
rdoc.rdoc_dir = 'rdoc'
rdoc.title = "sauce #{version}"
rdoc.rdoc_files.include('README*')
rdoc.rdoc_files.include('lib/**/*.rb')
end
GEMS = ['sauce-jasmine', 'sauce-cucumber', 'sauce-connect']
def gem_kind(name)
name.split('-')[1]
end
GEMS.each do |gem|
namespace gem_kind(gem) do
desc "Build the #{gem} gem"
task :build do
sh "(cd gems/#{gem} && rake build)"
end
desc "Release the #{gem} gem"
task :release do
sh "(cd gems/#{gem} && rake release)"
end
end
end
task :build => GEMS.collect { |n| "#{gem_kind(n)}:build" }
task :release => [:build]
task :default => [:'spec:unit', :build]