Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 151 lines (130 sloc) 4.646 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
require 'rubygems'
require 'rake'

begin
  require 'jeweler'
  Jeweler::Tasks.new do |s|
    s.name = %q{spork}
    s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
    s.authors = ["Tim Harper"]
    s.date = Date.today.to_s
    s.description = %q{A forking Drb spec server}
    s.email = ["timcharper+spork@gmail.com"]
    s.executables = ["spork"]
    s.extra_rdoc_files = ["README.rdoc", "MIT-LICENSE"]
    s.files = ["geminstaller.yml", "README.rdoc", "MIT-LICENSE"] + Dir["lib/**/*"] + Dir["assets/**/*"] + Dir["spec/**/*"] + Dir["features/**/*"]
    s.has_rdoc = true
    s.homepage = %q{http://github.com/timcharper/spork}
    s.rdoc_options = ["--main", "README.rdoc"]
    s.require_paths = ["lib"]
    s.rubyforge_project = %q{spork}
    s.rubygems_version = %q{1.3.1}
    s.summary = %{spork #{s.version}}
   # s is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
  end

  Jeweler::RubyforgeTasks.new do |rubyforge|
    rubyforge.doc_task = "rdoc"
  end

rescue LoadError
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
end

require 'spec/rake/spectask'
Spec::Rake::SpecTask.new(:spec) do |spec|
  spec.libs << 'lib' << 'spec'
  spec.spec_files = FileList['spec/**/*_spec.rb']
end

Spec::Rake::SpecTask.new(:rcov) do |spec|
  spec.libs << 'lib' << 'spec'
  spec.pattern = 'spec/**/*_spec.rb'
  spec.rcov = true
end

begin
  require 'cucumber/rake/task'
  Cucumber::Rake::Task.new(:features)
rescue LoadError
  task :features do
    abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
  end
end

task :default => :spec

require 'rake/rdoctask'
Rake::RDocTask.new do |rdoc|
  if File.exist?('VERSION.yml')
    require 'yaml'
    config = YAML.load(File.read('VERSION.yml'))
    version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
  else
    version = ""
  end

  rdoc.rdoc_dir = 'rdoc'
  rdoc.title = "Spork #{version}"
  rdoc.rdoc_files.include('README*')
  rdoc.rdoc_files.include('lib/**/*.rb')
end


# These are new tasks
begin
  require 'rake/contrib/sshpublisher'
  namespace :rubyforge do

    desc "Release gem and RDoc documentation to RubyForge"
    task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]

    namespace :release do
      desc "Publish RDoc to RubyForge."
      task :docs => [:rdoc] do
        config = YAML.load(
            File.read(File.expand_path('~/.rubyforge/user-config.yml'))
        )

        host = "#{config['username']}@rubyforge.org"
        remote_dir = "/var/www/gforge-projects/spork/"
        local_dir = 'rdoc'

        Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
      end
    end
  end
rescue LoadError
  puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
end

task :test_rails do
  FAIL_MSG = "!! FAIL !!"
  OK_MSG = "OK"
  UNSUPPORTED_MSG = "Unsupported"
  rails_gems = `gem list rails`.grep(/^rails\b/).first
  versions = rails_gems.scan(/\((.+)\)/).flatten.first.split(", ")
  versions_2_x_gems = versions.grep(/^2/)
  results = {}
  versions_2_x_gems.each do |version|
    if version < '2.0.5'
      puts "-----------------------------------------------------"
      puts "Rails #{version} is not officially supported by Spork"
      puts "Why? http://www.nabble.com/rspec-rails-fails-to-find-a-controller-name-td23223425.html"
      puts "-----------------------------------------------------"
      results[version] = "unsupported"
      next
    end
    
    
    puts "Testing version #{version}"
    pid = Kernel.fork do
      test_files = %w[features/rspec_rails_integration.feature features/rails_delayed_loading_workarounds.feature]
      
      unless version < '2.1'
        # pending a fix, the following error happens with rails 2.0:
        # /opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.11/lib/cucumber/rails/world.rb:41:in `use_transactional_fixtures': undefined method `configuration' for Rails:Module (NoMethodError)
        test_files << "features/cucumber_rails_integration.feature "
      end
      exec("env RAILS_VERSION=#{version} cucumber #{test_files * ' '}; echo $? > result")
    end
    Process.waitpid(pid)
    result = File.read('result').chomp
    FileUtils.rm('result')
    if result=='0'
      results[version] = OK_MSG
    else
      results[version] = FAIL_MSG
    end
  end
  
  puts "Results:"
  results.keys.sort.each do |version|
    puts "#{version}:\t#{results[version]}"
  end
  if results.values.any? { |r| r == FAIL_MSG }
    exit 1
  else
    exit 0
  end
end
Something went wrong with that request. Please try again.