diff --git a/Rakefile b/Rakefile index 711e3e00..fd101312 100644 --- a/Rakefile +++ b/Rakefile @@ -2,6 +2,8 @@ require "rake/clean" require 'rake/testtask' require 'rubygems/package_task' +task :default => :test + CLEAN << %w(pkg doc coverage .yardoc) def scope(path) @@ -74,76 +76,35 @@ task :pages do end end -# ----- Coverage ----- - -begin - require 'rcov/rcovtask' - - Rcov::RcovTask.new do |t| - t.test_files = FileList[scope('test/**/*_test.rb')] - t.rcov_opts << '-x' << '"^\/"' - if ENV['NON_NATIVE'] - t.rcov_opts << "--no-rcovrt" - end - t.verbose = true - end -rescue LoadError; end - -# ----- Profiling ----- - -begin - require 'ruby-prof' - desc < true).def_method(obj, :render) + result = RubyProf.profile { times.times { obj.render } } - RubyProf.const_get("#{(ENV['OUTPUT'] || 'Flat').capitalize}Printer").new(result).print - end -rescue LoadError; end - -# ----- Testing Multiple Rails Versions ----- - -rails_versions = [ - "v3.1.0", - "v3.0.10", - "v2.3.14", - "v2.2.3", - "v2.1.2", -] -rails_versions << "v2.0.5" if RUBY_VERSION =~ /^1\.8/ - -def test_rails_version(version) - Dir.chdir "test/rails" do - sh %{git checkout #{version}} - end - puts "Testing Rails #{version}" - Rake::Task['test'].reenable - Rake::Task['test'].execute + RubyProf.const_get("#{(ENV['OUTPUT'] || 'Flat').capitalize}Printer").new(result).print end def gemfiles - @gemfiles ||= - begin - raise 'Must install bundler to run Rails compatibility tests' if `which bundle`.empty? - Dir[File.dirname(__FILE__) + '/test/gemfiles/Gemfile.*']. - reject {|f| f =~ /\.lock$/}. - reject {|f| RUBY_VERSION !~ /^1\.8/ && f =~ /Gemfile\.rails-2\.[0-2]/} - end + @gemfiles ||= begin + Dir[File.dirname(__FILE__) + '/test/gemfiles/Gemfile.*']. + reject {|f| f =~ /\.lock$/}. + reject {|f| RUBY_VERSION >= '1.9' && f =~ /2\.[0-2]/} + end end def with_each_gemfile @@ -172,63 +133,6 @@ namespace :test do desc "Test all supported versions of rails. This takes a while." task :rails_compatibility => 'test:bundles:install' do - `rm -rf test/rails` - `rm -rf test/plugins` with_each_gemfile {sh "bundle exec rake test"} end end - -# ----- Handling Updates ----- - -def email_on_error - yield -rescue Exception => e - IO.popen("sendmail nex342@gmail.com", "w") do |sm| - sm << "From: nex3@nex-3.com\n" << - "To: nex342@gmail.com\n" << - "Subject: Exception when running rake #{Rake.application.top_level_tasks.join(', ')}\n" << - e.message << "\n\n" << - e.backtrace.join("\n") - end -ensure - raise e if e -end - -def ensure_git_cleanup - email_on_error {yield} -ensure - sh %{git reset --hard HEAD} - sh %{git clean -xdf} - sh %{git checkout master} -end - -task :handle_update do - email_on_error do - unless ENV["REF"] =~ %r{^refs/heads/(master|stable|haml-pages)$} - puts "#{'=' * 20} Ignoring rake handle_update REF=#{ENV["REF"].inspect}" - next - end - branch = $1 - - puts - puts - puts '=' * 150 - puts "Running rake handle_update REF=#{ENV["REF"].inspect}" - - sh %{git fetch origin} - sh %{git checkout stable} - sh %{git reset --hard origin/stable} - sh %{git checkout master} - sh %{git reset --hard origin/master} - - case branch - when "master" - sh %{rake release_edge --trace} - when "stable", "haml-pages" - sh %{rake pages --trace} - end - - puts 'Done running handle_update' - puts '=' * 150 - end -end