require 'rubygems' require 'bundler/setup' require 'bundler/gem_tasks' require 'rspec/core/rake_task' require 'cucumber/rake/task' require 'coveralls/rake/task' namespace :spec do desc 'Run unit specs' RSpec::Core::RakeTask.new(:units) do |t| t.pattern = './spec/units{,/*/**}/*_spec.rb' end desc 'Run the integration specs' RSpec::Core::RakeTask.new(:integrations) do |t| t.rspec_opts = '--tag all_adapters' t.pattern = "./spec/integration/#{BrokerConfig.current_adapter}{,/*/**}/*_spec.rb" end cucumber_opts = "--format progress --tag @all_adapters,@#{BrokerConfig.current_adapter} --tag ~@wip" cucumber_opts += ' --tag ~@no_ci' if ENV['CI']=='true' && ENV['ADAPTER'] && ENV['ADAPTER'].start_with?('bunny') Cucumber::Rake::Task.new(:features) do |t| t.cucumber_opts = cucumber_opts end desc 'run all the specs' task all: [:units, :integrations, :features] desc 'run all the specs for each adapter' task :all_adapters do current_adapter = BrokerConfig.current_adapter BrokerConfig.all_adapters.each do |adapter| set_adapter_under_test(adapter) system('rake spec:all') end set_adapter_under_test(current_adapter) end end def set_adapter_under_test(adapter) system "echo #{adapter} > #{File.join(File.dirname(__FILE__), '.adapter_under_test')}" end Coveralls::RakeTask.new desc 'run with code coverage' task ci: ['spec:all', 'coveralls:push'] namespace :undertest do BrokerConfig.all_adapters.each do |adapter| desc "set the adapter under test to #{adapter}" task adapter do set_adapter_under_test(adapter) end end end task default: ['spec:all']