Skip to content
This repository
tag: v2.6.1.beta1
Fetching contributors…

Cannot retrieve contributors at this time

file 154 lines (134 sloc) 4.248 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
require 'pathname'
ENV["BUNDLE_GEMFILE"] ||= begin
                            version = if File.exist?("./.gemfile")
                                        File.read("./.gemfile").chomp
                                      else
                                        "rails-3.0.7"
                                      end
                            File.expand_path("../gemfiles/#{version}", __FILE__)
                          end
puts "Using gemfile: #{ENV["BUNDLE_GEMFILE"].gsub(Pathname.new(__FILE__).dirname.to_s,'').sub(/^\//,'')}"
require "bundler"
begin
  Bundler.setup
rescue
  if ENV["CI"]
    sh "bundle install"
    Bundler.setup
  else
    raise "You need to install a bundle first. Try 'thor gemfile:use 3.0.7'"
  end
end
Bundler::GemHelper.install_tasks

task :build => :raise_if_psych_is_defined

task :raise_if_psych_is_defined do
  if defined?(Psych)
    raise <<-MSG
===============================================================================
Gems compiled in Ruby environments with Psych loaded are incompatible with Ruby
environments that don't have Psych loaded. Try building this gem in Ruby 1.8.7
instead.
===============================================================================
MSG
  end
end

require 'rake'
require 'yaml'

require 'rspec'
require 'rspec/core/rake_task'

begin
  require 'cucumber/rake/task'

  Cucumber::Rake::Task.new(:cucumber)

  namespace :cucumber do
    desc "Run cucumber features using rcov"
    Cucumber::Rake::Task.new :rcov => :cleanup_rcov_files do |t|
      t.cucumber_opts = %w{--format progress}
      t.rcov = true
      t.rcov_opts = %[-Ilib -Ispec --exclude "gems/*,features"]
      t.rcov_opts << %[--text-report --sort coverage --aggregate coverage.data]
    end
  end
rescue LoadError
  puts "unable to load cucumber, some tasks unavailable"
  task :cucumber do
    # no-op
  end
end
task :cleanup_rcov_files do
  rm_rf 'coverage.data'
end

desc "Run all examples"
RSpec::Core::RakeTask.new(:spec) do |t|
  t.rspec_opts = %w[--color]
end


namespace :spec do
  desc "Run all examples using rcov"
  RSpec::Core::RakeTask.new :rcov => :cleanup_rcov_files do |t|
    t.rcov = true
    t.rcov_opts = %[-Ilib -Ispec --exclude "gems/*,features"]
    t.rcov_opts << %[--text-report --sort coverage --no-html --aggregate coverage.data]
  end
end

namespace :generate do
  desc "generate a fresh app with rspec installed"
  task :app do |t|
    unless File.directory?('./tmp/example_app')
      sh "rails new ./tmp/example_app --skip-javascript --skip-gemfile --skip-git"
      bindir = File.expand_path("gemfiles/bin")
      if test ?d, bindir
        Dir.chdir("./tmp/example_app") do
          sh "rm -rf test"
          sh "ln -s #{bindir}"
          application_file = File.read("config/application.rb")
          sh "rm config/application.rb"
          File.open("config/application.rb","w") do |f|
            f.write application_file.gsub("config.assets.enabled = true","config.assets.enabled = false")
          end
        end
      end
    end
  end

  desc "generate a bunch of stuff with generators"
  task :stuff do
    in_example_app "bin/rake rails:template LOCATION='../../templates/generate_stuff.rb'"
  end
end

def in_example_app(command)
  Dir.chdir("./tmp/example_app/") do
    Bundler.with_clean_env do
      sh command
    end
  end
end

namespace :db do
  task :migrate do
    in_example_app "bin/rake db:migrate"
  end

  namespace :test do
    task :prepare do
      in_example_app "bin/rake db:test:prepare"
    end
  end
end

desc "run a variety of specs against the generated app"
task :smoke do
  in_example_app "bin/rake rails:template --trace LOCATION='../../templates/run_specs.rb'"
end

desc 'clobber generated files'
task :clobber do
  rm_rf "pkg"
  rm_rf "tmp"
  rm "Gemfile.lock" if File.exist?("Gemfile.lock")
end

namespace :clobber do
  desc "clobber the generated app"
  task :app do
    rm_rf "tmp/example_app"
  end
end

desc "Push docs/cukes to relishapp using the relish-client-gem"
task :relish, :version do |t, args|
  raise "rake relish[VERSION]" unless args[:version]
  sh "relish push rspec/rspec-rails:#{args[:version]}"
end

task :default => [:spec, "clobber:app", "generate:app", "generate:stuff", :smoke, :cucumber]
Something went wrong with that request. Please try again.