require 'rubygems' require 'rake' def version if File.exist?('VERSION.yml') config = YAML.load(File.read('VERSION.yml')) "#{config[:major]}.#{config[:minor]}.#{config[:patch]}" else "" end end # gem builder begin require 'jeweler' Jeweler::Tasks.new do |gem| gem.name = "eventable" gem.summary = %Q{TODO} gem.description = %Q{TODO} gem.email = "info@dutchcoastsoftware.com" gem.homepage = "http://github.com/dcs/eventable" gem.authors = ["Mathijs Kwik"] gem.add_development_dependency('redgreen') gem.files = FileList["[A-Z]*", "{app,config,generators,lib,shoulda_macros,rails}/**/*"] gem.rdoc_options << '--main' << 'README.textile' << '--title' << "Eventable #{version}" gem.extra_rdoc_files = ["*.textile", "LICENSE", "app/**/*.rb"] end rescue LoadError puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com" end # rdoc generation require 'rake/rdoctask' Rake::RDocTask.new do |rdoc| rdoc.rdoc_dir = 'rdoc' rdoc.title = "Eventable #{version}" rdoc.rdoc_files.include('*.textile') rdoc.rdoc_files.include('LICENSE') rdoc.rdoc_files.include('lib/**/*.rb') rdoc.rdoc_files.include('app/**/*.rb') rdoc.main = "README.textile" end # rcov test coverage 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 # testing with a full empty rails app require 'rake/testtask' namespace :test do Rake::TestTask.new(:all => ['generator:cleanup', 'generator:generate']) do |task| task.libs << 'lib' task.libs << "test" task.pattern = 'test/**/*_test.rb' task.verbose = false end end generators = %w(eventable) namespace :generator do desc "Cleans up the test app before running the generator" task :cleanup do generators.each do |generator| FileList["generators/#{generator}/templates/**/*.*"].each do |each| file = "test/rails_root/#{each.gsub("generators/#{generator}/templates/",'')}" File.delete(file) if File.exists?(file) end end FileList["test/rails_root/db/migrate/*_setup_eventable_#{version.gsub('.', '_')}.rb"].each do |each| FileUtils.rm_rf(each) end FileUtils.rm_rf("test/rails_root/vendor/plugins/eventable") FileUtils.mkdir_p("test/rails_root/vendor/plugins") eventable_root = File.expand_path(File.dirname(__FILE__)) system("ln -fns #{eventable_root} test/rails_root/vendor/plugins/eventable") end desc "Run the generator on the tests" task :generate do generators.each do |generator| system "cd test/rails_root && ./script/generate #{generator} && rake db:migrate db:test:prepare" end end end desc "Run the test suite" task :default => 'test:all'