9e909d5be3
Update Bundler to 1.0.15. Update Rails to 2.3.12. Update rails_xss plugin. The latter two were the source of a considerable amount of grief, as rails_xss is now MUCH stricter about what string methods can be used. Also made it possible to use rake 0.9.x with Instiki. But you probably REALLY want to use ruby bundle exec rake ... instead of just saying rake ....
190 lines
5 KiB
Ruby
190 lines
5 KiB
Ruby
# -*- encoding: utf-8 -*-
|
|
$:.unshift File.expand_path("../lib", __FILE__)
|
|
require 'bundler/gem_tasks'
|
|
|
|
namespace :spec do
|
|
desc "Ensure spec dependencies are installed"
|
|
task :deps do
|
|
sh "gem list ronn | (grep 'ronn' 1> /dev/null) || gem install ronn --no-ri --no-rdoc"
|
|
sh "gem list rspec | (grep 'rspec (2.' 1> /dev/null) || gem install rspec --no-ri --no-rdoc"
|
|
end
|
|
end
|
|
|
|
begin
|
|
# running the specs needs both rspec and ronn
|
|
require 'rspec/core/rake_task'
|
|
require 'ronn'
|
|
|
|
desc "Run specs"
|
|
RSpec::Core::RakeTask.new do |t|
|
|
t.rspec_opts = %w(-fs --color)
|
|
t.ruby_opts = %w(-w)
|
|
end
|
|
task :spec => "man:build"
|
|
|
|
namespace :spec do
|
|
task :clean do
|
|
rm_rf 'tmp'
|
|
end
|
|
|
|
desc "Run the spec suite with the sudo tests"
|
|
task :sudo => ["set_sudo", "spec", "clean_sudo"]
|
|
|
|
task :set_sudo do
|
|
ENV['BUNDLER_SUDO_TESTS'] = '1'
|
|
end
|
|
|
|
task :clean_sudo do
|
|
puts "Cleaning up sudo test files..."
|
|
system "sudo rm -rf #{File.expand_path('../tmp/sudo_gem_home', __FILE__)}"
|
|
end
|
|
|
|
namespace :rubygems do
|
|
# Rubygems 1.3.5, 1.3.6, and HEAD specs
|
|
rubyopt = ENV["RUBYOPT"]
|
|
%w(master v1.3.6 v1.3.7 v1.4.2 v1.5.3 v1.6.2 v1.7.2 v1.8.3).each do |rg|
|
|
desc "Run specs with Rubygems #{rg}"
|
|
RSpec::Core::RakeTask.new(rg) do |t|
|
|
t.rspec_opts = %w(-fs --color)
|
|
t.ruby_opts = %w(-w)
|
|
end
|
|
|
|
# Create tasks like spec:rubygems:v1.8.3:sudo to run the sudo specs
|
|
namespace rg do
|
|
task :sudo => ["set_sudo", rg, "clean_sudo"]
|
|
end
|
|
|
|
task "clone_rubygems_#{rg}" do
|
|
unless File.directory?("tmp/rubygems")
|
|
system("git clone git://github.com/rubygems/rubygems.git tmp/rubygems")
|
|
end
|
|
hash = nil
|
|
|
|
Dir.chdir("tmp/rubygems") do
|
|
system("git remote update")
|
|
system("git checkout #{rg}")
|
|
system("git pull origin master") if rg == "master"
|
|
hash = `git rev-parse HEAD`.strip
|
|
end
|
|
|
|
puts "Running bundler specs against rubygems '#{rg}' at #{hash}"
|
|
ENV["RUBYOPT"] = "-I#{File.expand_path("tmp/rubygems/lib")} #{rubyopt}"
|
|
end
|
|
|
|
task rg => "clone_rubygems_#{rg}"
|
|
task "rubygems:all" => rg
|
|
end
|
|
|
|
desc "Run specs under a Rubygems checkout (set RG=path)"
|
|
RSpec::Core::RakeTask.new("co") do |t|
|
|
t.rspec_opts = %w(-fs --color)
|
|
t.ruby_opts = %w(-w)
|
|
end
|
|
|
|
task "setup_co" do
|
|
ENV["RUBYOPT"] = "-I#{File.expand_path ENV['RG']} #{rubyopt}"
|
|
end
|
|
|
|
task "co" => "setup_co"
|
|
task "rubygems:all" => "co"
|
|
end
|
|
|
|
namespace :ruby do
|
|
# Ruby 1.8.6, 1.8.7, and 1.9.2 specs
|
|
task "ensure_rvm" do
|
|
raise "RVM is not available" unless File.exist?(File.expand_path("~/.rvm/scripts/rvm"))
|
|
end
|
|
|
|
%w(1.8.6-p399 1.8.7-p302 1.9.2-p0).each do |ruby|
|
|
ruby_cmd = File.expand_path("~/.rvm/bin/ruby-#{ruby}")
|
|
|
|
desc "Run specs on Ruby #{ruby}"
|
|
RSpec::Core::RakeTask.new(ruby) do |t|
|
|
t.rspec_opts = %w(-fs --color)
|
|
t.ruby_opts = %w(-w)
|
|
end
|
|
|
|
task "ensure_ruby_#{ruby}" do
|
|
raise "Could not find Ruby #{ruby} at #{ruby_cmd}" unless File.exist?(ruby_cmd)
|
|
end
|
|
|
|
task "ensure_ruby_#{ruby}" => "ensure_rvm"
|
|
task ruby => "ensure_ruby_#{ruby}"
|
|
task "ruby:all" => ruby
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
namespace :man do
|
|
directory "lib/bundler/man"
|
|
|
|
Dir["man/*.ronn"].each do |ronn|
|
|
basename = File.basename(ronn, ".ronn")
|
|
roff = "lib/bundler/man/#{basename}"
|
|
|
|
file roff => ["lib/bundler/man", ronn] do
|
|
sh "ronn --roff --pipe #{ronn} > #{roff}"
|
|
end
|
|
|
|
file "#{roff}.txt" => roff do
|
|
sh "groff -Wall -mtty-char -mandoc -Tascii #{roff} | col -b > #{roff}.txt"
|
|
end
|
|
|
|
task :build_all_pages => "#{roff}.txt"
|
|
end
|
|
|
|
desc "Build the man pages"
|
|
task :build => "man:build_all_pages"
|
|
|
|
desc "Clean up from the built man pages"
|
|
task :clean do
|
|
rm_rf "lib/bundler/man"
|
|
end
|
|
end
|
|
|
|
begin
|
|
require 'ci/reporter/rake/rspec'
|
|
|
|
namespace :ci do
|
|
desc "Run specs with Hudson output"
|
|
RSpec::Core::RakeTask.new(:spec)
|
|
task :spec => ["ci:setup:rspec", "man:build"]
|
|
end
|
|
|
|
rescue LoadError
|
|
namespace :ci do
|
|
task :spec do
|
|
abort "Run `rake ci:deps` to be able to run the CI specs"
|
|
end
|
|
|
|
desc "Install CI dependencies"
|
|
task :deps do
|
|
sh "gem list ci_reporter | (grep 'ci_reporter' 1> /dev/null) || gem install ci_reporter --no-ri --no-rdoc"
|
|
end
|
|
task :deps => "spec:deps"
|
|
end
|
|
end
|
|
|
|
rescue LoadError
|
|
task :spec do
|
|
abort "Run `rake spec:deps` to be able to run the specs"
|
|
end
|
|
end
|
|
|
|
namespace :vendor do
|
|
desc "Build the vendor dir"
|
|
task :build => :clean do
|
|
sh "git clone git://github.com/wycats/thor.git lib/bundler/vendor/tmp"
|
|
sh "mv lib/bundler/vendor/tmp/lib/* lib/bundler/vendor/"
|
|
rm_rf "lib/bundler/vendor/tmp"
|
|
end
|
|
|
|
desc "Clean the vendor dir"
|
|
task :clean do
|
|
rm_rf "lib/bundler/vendor"
|
|
end
|
|
end
|
|
|
|
task :default => :spec
|