Rakefile in ruml-0.0.2 vs Rakefile in ruml-0.1.0

- old
+ new

@@ -3,10 +3,43 @@ # Test require 'rake/testtask' desc 'Default: run unit tests.' task :default => :test -Rake::TestTask.new(:test) do |test| - test.test_files = FileList.new('test/*_test.rb') - test.libs << 'test' - test.verbose = true +AVAILABLE_TEST_FIXTURES = %w[file yaml] + +AVAILABLE_TEST_FIXTURES.each do |test_fixture| + namespace :test do + Rake::TestTask.new(test_fixture) do |test| + ENV['TEST_FIXTURE'] = test_fixture + test.test_files = FileList.new('test/*_test.rb') + test.libs << 'test' + test.verbose = true + end + end +end + +desc "Run tests for #{AVAILABLE_TEST_FIXTURES.join(', ')}" +task :test => AVAILABLE_TEST_FIXTURES.map { |f| "test:#{f}" } + +SUPPORTED_RUBIES = %w[ree 1.9.2 1.9.3 jruby rbx] +GEMSPEC = Bundler::GemHelper.new(Dir.pwd).gemspec + +def with_ruby(ruby, command) + rvm = "#{ruby}@#{GEMSPEC.name}" + command = %{rvm #{rvm} exec bash -c '#{command}'} + + puts "\n" * 3 + puts "CMD: #{command}" + puts "=" * 40 + + system(command) or raise "command failed: #{command}" +end + +namespace :rubies do + desc "Run tests for following supported platforms #{SUPPORTED_RUBIES.join ", "}" + task :test do + command = "bundle check || bundle install && bundle exec rake" + rubies = ENV['RUBIES'] ? ENV['RUBIES'].split(",") : SUPPORTED_RUBIES + rubies.each { |ruby| with_ruby(ruby, command) } + end end